Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.18;
Скачать: CL | DM;

Вниз

Не может быть!!!   Найти похожие ветки 

 
Number 1   (2002-10-17 03:10) [0]

Прочитал в одной книге что язык Си - это низкоуровневый язык!
Правда ли это?


 
Правда   (2002-10-17 04:51) [1]

! Английский Шекспира и русский Толстого - гораздо выше! :)))
А вообще-то принято "низкоуровневым" называть ассемблер, поскольку он работает непосредственно на уровне процессора.


 
Горькая правда   (2002-10-17 07:03) [2]

Скажите название книги.
Но сдается мне, что, кто-то просто через строчку литератру читает.


 
evgeg ©   (2002-10-17 07:32) [3]

C назвают языком среднего уровня. Он имеет черты и высокоуроневых и низкоуровневых языков. В обшем, выше, чем assemler, ниже чем Паскаль.


 
Zlob   (2002-10-17 07:47) [4]

Все познается в сравнении :)


 
Suntechnic ©   (2002-10-17 08:15) [5]

>evgeg © (17.10.02 07:32)
А можно поподробнее о низкоуровневых чертах С и именно тех, которые отличают его от Паскаля? Простите, сам такой анализ провести не могу, поскольку не являюсь гуру Паскаля.


 
KSergey ©   (2002-10-17 08:27) [6]

Я думаю, что язык просто весьма универсален, т.е. все зависет от того, как его применять.


 
evgeg ©   (2002-10-17 08:38) [7]

> Suntechnic © (17.10.02 08:15)

Я сам не гуру, так что подробного анализа от меня не ждите.

Примеры: практически отсутствует контроль типов, макросы и вообще препроцессор, возможность вызова функции без предварительного объявления и как следствие этого отсутсвие контроля входных параметров функций.


 
Suntechnic ©   (2002-10-17 08:44) [8]

>evgeg © (17.10.02 08:38)
С остальным понятно, что вы имеете ввиду, не понял только вот это:
возможность вызова функции без предварительного объявления

Это как? Типа объявил указатель на ф-цию, положил туда чего то и вызвал? А разве это нельзя проделать в Паскале?


 
Sergey13 ©   (2002-10-17 08:57) [9]

2Number 1 (17.10.02 03:10)
>... что язык Си - это низкоуровневый язык
Это паскалисты-делфятники и прочие, примкнувшие к ним, его опустили ниже плинтуса. 8-)


 
Ketmar ©   (2002-10-17 09:52) [10]

2Suntechnic:
типа вот так:
fn1()
{ fn2(); }

а только потом идет
fn2()
{ fn1(); }


Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
han_malign ©   (2002-10-17 10:09) [11]

ANSI C - алгоритмический язык низкого уровня (2 Sergey13 - низкого уровня в смысле простоты и оптимальности отбражения на машинный код, не даром для DSP делают компиляторы под C, а не под С++, Pascal, Basic, etc)
З.Ы. А HTML, по большому счету - вообще не язык.
З.З.Ы. Кстати Delphi тоже не язык - это система RAD(rapid application development)- написанная на объектном паскале и использующая его, и первоначально вообще позиционировалась как система разработки БД. Только, от версии к версии, паскаль мутировал в нечто среднее между Basic,C++ и Object Pascal - и этот гибрид теперь, за глаза, называют Delphi (бедный Вирт).

Деннис Ритчи, автор Си (1993): «Я утверждаю, что Паскаль очень близок языку Си. Одни, быть может, этому удивятся, другие — нет... Даже интересно, насколько они близки друг другу. Эти языки больше расходятся в деталях, но в основе своей одинаковы. Если вы взглянете на используемые типы данных, а также на операции над типами, то обнаружите очень большую степень совпадения... И это несмотря на то, что намерения Вирта при создании Паскаля весьма отличались от наших в языке Си. Он создавал язык для обучения, а потому преследовал дидактические цели. И, как я заметил это по Паскалю и по его более поздним языкам, Вирт был во власти своего стремления ограничить выразительные средства как можно сильнее...»

Вирт (1984): «Утверждалось, что Паскаль был разработан в качестве языка для обучения. Хотя это утверждение справедливо, но его использование при обучении не являлось единственной целью. На самом деле я не верю в успешность применения во время обучения таких инструментов и методик, которые нельзя использовать при решении каких-то практических задач. По сегодняшним меркам Паскаль обладал явными недостатками при программировании больших систем, но 15 лет назад он представлял собой разумный компромисс между тем, что было желательно, и тем, что было эффективно»


 
Ketmar ©   (2002-10-17 10:34) [12]

2han_malign:
есть сведения, что теперь борланд официально называет свой язык дельфи. впрочем, утверждать не буду.

Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
Sergey13 ©   (2002-10-17 10:58) [13]

2han_malign © (17.10.02 10:09)
>(2 Sergey13 ....
Огромное спасибо за разъяснение, а я то темный думал... 8-)


 
LongIsland ©   (2002-10-17 11:05) [14]


> Ketmar © (17.10.02 10:34)
> есть сведения, что теперь борланд официально называет свой
> язык дельфи. впрочем, утверждать не буду.

Насколько я помню, он называется IDL?..


 
han_malign ©   (2002-10-17 11:07) [15]

2 Кетмар
Хронология развития языка Паскаль, внизу сводка по современным языкам программирования, C# - есть, а Delphi - нет, хотя все уже могло измениться(все таки Delphi - уже давно не паскаль, да и компилятор dcc32, а не pcc32 ;^))
http://194.87.63.15/articles/058.htm


 
han_malign ©   (2002-10-17 11:16) [16]

2 LongIslang
Delphi integrated development language - вполне вероятно.


 
Ketmar ©   (2002-10-17 12:06) [17]

2han_malign:
фактически, паскаль - это то, что дяденька Вирт придумал. а у борландов - Object Pascal. знаете, как фильмы делают "по мотивам"? так и тут - "по мотивам произведения Н. Вирта" %-))

Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
Игорь Шевченко ©   (2002-10-17 12:09) [18]

Называется он Delphi Language

Эта...хорош священную войну устраивать! :-)
Что С, что паскаль, языки практически одинаковы


 
han_malign ©   (2002-10-17 12:20) [19]

> Что С, что паскаль, языки практически одинаковы
Мне так вообще по барабану, на чем скажут, на том и пишу(вот правда на Васик, со школы аллергия)


 
Странник ©   (2002-10-17 12:42) [20]

> han_malign © (17.10.02 12:20)
аналогично.


 
[NIKEL] ©   (2002-10-17 14:10) [21]

хех... практически... :)


 
Ketmar ©   (2002-10-17 14:25) [22]

мне вот тоже все равно: на чем скажут - на Дельфи и пишу %-))

Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
DiamondShark ©   (2002-10-17 15:16) [23]


> Прочитал в одной книге что язык Си - это низкоуровневый язык!
> Правда ли это?


Нет, не правда. Си -- это вообще не язык, это интеллектуальная отрыжка. Ричи пёрнул мозгом -- получился Си.


<..> низкого уровня в смысле простоты и оптимальности отбражения
> на машинный код, не даром для DSP делают компиляторы под
> C, а не под С++, Pascal, Basic, etc <...>


Была единственная архитектура, на которую Си ложился просто и оптимально -- PDP-11. Там действительно строчка типа


while(a[i++] != b[--j])


ложилась на одну машинную команду.
На современный IA-32 он ложится только после нехилого пыхтенья оптимизатора, а для IBM-360 он был настолько чужеродным, что никто особо и не пытался его положить.

Собственно, создание Си было по сути конкретным жульничеством: создать для конкретной архитектуры компилятор, который без оптимизатора (и, ессесно, при мозгоё..ве кодера) давал бы достаточно эффективный маш. код. А так как оптимизатора не было, то и компилер получался компактный и нетребовательный к мегагерцам и килобайтам (слово "мегабайт" в те времена к ОЗУ не применялось;) ). Плюс архитектура PDP-11 была в то время самой распространенной для построения систем реального времени.

И пополз язык в сопровождении устойчивого мифа, рожденного (в некотором роде обосновано) на конкретной архитектуре.

Для DSP не писал, а вот для однокристалок приходилось.
Писали мы для однокристалок на Модуле, и нормально все ложилось.
А вот Си в аккумуляторную модель ложилась при том условии, что собственно от Си в программе и не оставалось ничего.


 
Suntechnic ©   (2002-10-17 15:24) [24]

Ketmar © (17.10.02 09:52)
fn1()
{ fn2(); }
а только потом идет
fn2()
{ fn1(); }


Да ерунду вы написали. Такое и компиляться не будет. Чтобы такое проделать вам придётся вынести описание прототипа ф-ции вперёд. Что то типа:

void fn2();
void fn1()
{ fn2(); }
void fn2()
{ fn1(); }


Ну и где здесь вы видите "возможность вызова функции без предварительного объявления "?


 
Ketmar ©   (2002-10-17 15:30) [25]

2Suntechnic:
вовсе даже будет. кто же говорил про ANSI C? говорилось про K&R C. там - будет.

Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
vopros ©   (2002-10-17 15:31) [26]

Классный язык.


 
Игорь Шевченко ©   (2002-10-17 15:35) [27]

DiamondShark © (17.10.02 15:16)

>
> Нет, не правда. Си -- это вообще не язык, это интеллектуальная
> отрыжка. Ричи пёрнул мозгом -- получился Си.


Меняете Си на Паскаль, Ричи на Вирта и получается слово в слово та же правда :-)


 
DiamondShark ©   (2002-10-17 15:54) [28]


> Игорь Шевченко © (17.10.02 15:35)


Не говорите ерунды! Вирт -- голова! А Ричи -- обкуреный нарк.


 
Suntechnic ©   (2002-10-17 15:54) [29]

>DiamondShark © (17.10.02 15:16)
И пополз язык в сопровождении устойчивого мифа, рожденного (в некотором роде обосновано) на конкретной архитектуре.

Ну понятное дело. Ты в то время ещё под стол пешком ходил. Некому было человечеству правду матку открыть, но теперь то все всё знают :D

>Ketmar © (17.10.02 15:30)
Я то как раз думал что мы ведём речь о неком стандартном языке.



 
DiamondShark ©   (2002-10-17 15:57) [30]


> Suntechnic © (17.10.02 15:54)


Но теперь-то я есть! Но некоторые всё равно не всё знают.

А думать ты лучше не думай -- это у тебя хреново получается.


 
Suntechnic ©   (2002-10-17 15:58) [31]

>DiamondShark © (17.10.02 15:57)
А ты бы лучше помолчал, потому как трындеть у тебя получается ещё хуже, чем у меня думать.


 
Mike B. ©   (2002-10-17 16:00) [32]

И пополз ЯЗЫК в сопровождении УСТОЙЧИВОГО МИФА

Вы только представьте себе эту картинку, вот ужасть то!!!



 
Игорь Шевченко ©   (2002-10-17 16:23) [33]

DiamondShark © (17.10.02 15:54)


> Не говорите ерунды!


Взаимно, ладно ?


 
DiamondShark ©   (2002-10-17 16:24) [34]


> Suntechnic © (17.10.02 15:58)
> >DiamondShark © (17.10.02 15:57)
> А ты бы лучше помолчал, потому как трындеть у тебя получается
> ещё хуже, чем у меня думать.


У тебя научусь: ты же по трындежу спец.
Жаль только, что это твое единственное достоинство.


 
Ketmar ©   (2002-10-17 16:28) [35]

2Suntechnic:
а чем K&R - не стандарт? на ANSI свет клином не сошелся. и вообще ANSI - это AMERICAN и ты ды... если уж на то пошло, давайте про ISO-стандарты тогда. хотя я даже не знаю, есть ли ISO C... %-))

Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
Suntechnic ©   (2002-10-17 16:29) [36]

>DiamondShark © (17.10.02 16:24)
Мне до тебя в плане потрындеть, как тебе до меня в плане подумать. Так что ты у нас непревзайдённый мастер.


 
Mike B. ©   (2002-10-17 16:33) [37]

> DiamondShark © (17.10.02 16:24)
Чем попусту ругаться, расскажите лучше про свой опыт работы на Модуле.
И вообще, если кто работал на "паскалеподобных" языках (Модула, Оберон, Компонентный Паскаль), расскажите про их достоинства/недостатки/сходства/различия, интересно было бы почитать (я имею ввиду не столько теорию, сколько опыт реального применения в серьезных проектах)


 
Anatoly Podgoretsky ©   (2002-10-17 16:36) [38]

Ketmar © (17.10.02 16:28)
ISO стандарты есть и на Си и на Паскаль


 
DiamondShark ©   (2002-10-17 16:38) [39]


> Suntechnic © (17.10.02 16:29)


Ну чего ты разошелся? Чего ты ко всем всегда цепляешся? Умный шибко? Так коли умный иди в академию наук, а ты на форуме болтаешься и херню гонишь. Вот веришь, скажи ты чего-нибудь в тему, ни пол-слова кривого бы к тебе не было. Нет, блин, вот обязательно надо с подвыподвертом чего-нибудь ляпнуть.
Что, самоутверждаешься? Во дворе детишки дразнят?


 
Suntechnic ©   (2002-10-17 16:39) [40]

Ketmar © (17.10.02 16:28)
а чем K&R - не стандарт? на ANSI свет клином не сошелся. и вообще ANSI - это AMERICAN и ты ды... если уж на то пошло, давайте про ISO-стандарты тогда. хотя я даже не знаю, есть ли ISO C... %-))

Вообще то стандарт ANSI C бы принят и как ISO стандарт.
http://www.eskimo.com/~scs/C-faq/q11.1.html

А вот кто стандартизировал K&R?


 
DiamondShark ©   (2002-10-17 16:42) [41]


> Mike B. © (17.10.02 16:33)


На "Королевство" заходите. Там как раз на эту тему обсуждение идет.


 
Suntechnic ©   (2002-10-17 16:42) [42]

>DiamondShark © (17.10.02 16:38)
Уважаемый... Херню гонишь ты, а мне как раз не нравится когда херню несут и по делу и без дела. А чем я на форуме занимаюсь это как раз не твое дело. Пользы тут от меня здесь ничуть не меньше, чем от тебя.


 
Mike B. ©   (2002-10-17 16:44) [43]

> DiamondShark © (17.10.02 16:42)
Оно конечно спасибо, но хотелось побольше разных мнений услышать.

Не напрягайтесь :-)


 
Ketmar ©   (2002-10-17 16:59) [44]

2Suntechnic:
K&R стандартизировались сами. как отцы языка. %-)

2Mike B.:
реально - что модула, что Borland Pascal (без объектов) - одного поля ягоды. если не учитывать библиотек, которые для серьезного проекта все равно пишутся свои. в обероне - любопытная концепция ООП. но ни для модулы, ни для оберона нету ничего даже приближающегося к дельфи, и визуальное написание софта весьма неудобно. разве только Amadeus (что-то около 900 $), но я его так и не увидел в живую %-((
в обероне нету оператора Dispose. вместо него - сборщик мусора и автоотслеживание момента, когда объект пора убивать. немного странновато и непривычно после дельфи.
из компиляторов - XDS Modula. очень хороший компилятор, я его периодически использую. поддерживает модулу и оберон, имеет отличный оптимизатор.

Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
evgeg ©   (2002-10-17 19:00) [45]

> Suntechnic © (17.10.02 16:39)

Возможно, в последний стандарт C действительно ввели обязательность прототипа функций.
Но давайте рассмотрим такой пример:

cpp1.c

int f (int x)
{ .. }

cpp2.c

int f (float y, int i)

int g ()
{
float y = 2.232424;
int t = 3;
f (y, t);
}

и скомпонуем cpp1.c и cpp2.c.
Предполагаю, что компоновщик это спокойно проглотит.
Что будет в результате выполнения программы -- не знаю.

C C++ такой трюк не пройдет. Там другое сошлашение о вызовах.
Но мы говорим не о С++, C++ -- другой язык. Мы говорим о С.

Если не прав -- поправьте.


 
Suntechnic ©   (2002-10-17 19:09) [46]

>evgeg © (17.10.02 19:00)
Такая конструкция спокойно скомпиляется, но всё закончится на стадии линковки, потому как линковщик не найдёт имплементацию для int f (float y, int i);, а int f (int x); будет просто воспринята как перегруженная ф-ция. Перегрузку ведь пока никто не отменял.



 
evgeg ©   (2002-10-17 19:12) [47]

> Suntechnic © (17.10.02 19:09)

Вы, что не читали конец моего сообщения?
Мы говорим НЕ О С++, а о С. ЭТО РАЗНЫЕ ЯЗЫКИ.
В С нет перегрузки, в С нет контроля параметров функций.


 
Suntechnic ©   (2002-10-17 20:04) [48]

>evgeg © (17.10.02 19:12)
Сорри действительно про перегрузку это я загнул :(

По идеи в чистом С должно скушать.
С вашей фразей о вызове ф-ций без предварительного объявления всё понятно. Спасибо.


 
Ru ©   (2002-10-21 12:56) [49]

C - универсальный язык, т.к. сочетает в себе возможности языка ассемблера и других языков, которые называются языками высокого уровня.
Паскаль и Си довольно похожи. В паскале сложнее прерывания вызывать, во всяком случае я только в двух книгах одного автора видел описание и то там примеры были довольно простые.


 
Игорь Шевченко ©   (2002-10-21 13:06) [50]

Ru © (21.10.02 12:56)

> В паскале сложнее прерывания вызывать


Монопенисуально, что в паскале, что в С


 
Aleks1   (2002-10-22 03:40) [51]

2 Игорь Шевченко © (21.10.02 13:06)
Чё-то Игорь Вас сегодня, плииз вчера, потянуло на высокохудожественные выражения. Не иначе, коньяк, позавчера был тоже не ординарным! :)))


 
Игорь Шевченко ©   (2002-10-22 10:43) [52]

Aleks1 (22.10.02 03:40)

Не коньяком единым... :-)


 
Ru ©   (2002-10-24 12:35) [53]

>Игорь Шевченко © (21.10.02 13:06)

на Си вызов прерывания почти как на языке Ассемблера, а на Паскале количество строк несколько более.


>Монопенисуально

не совсем понял, что у вас с пенисом Ж:)


 
Игорь Шевченко ©   (2002-10-24 13:01) [54]

Ru © (24.10.02 12:35)


> на Си вызов прерывания почти как на языке Ассемблера, а
> на Паскале количество строк несколько более.


Бред


 
Ru ©   (2002-10-30 15:04) [55]

>Игорь Шевченко © (24.10.02 13:01)

?могу поискать пример по системному программированию, может где-то завалялся. для вызова 21h на Си уходило 5-6 строк кода на Паскале 8-10.
Возможно у меня пример не "правильный".


 
Странник ©   (2002-10-30 18:47) [56]

> Ru
Вы забыли про пачку begin-end"ов, var и т.д. :)
Но в С все равно проще.
Например такое:

int aa[20];
int *f(int i)
{ return aa + i;
}

void g()
{ int j;
for(j=0; j < 20; ++j)
*f(j) += j;
}



Страницы: 1 2 вся ветка

Текущий архив: 2002.11.18;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.027 c
1-59211
MsGuns
2002-11-06 11:51
2002.11.18
2 экземпляра TIniFile


1-59109
murderer
2002-11-07 11:52
2002.11.18
VCL40.bpl


4-59483
ZrenBy
2002-10-07 18:14
2002.11.18
Адрес WndProc


8-59286
Дж
2002-07-31 11:37
2002.11.18
Как можно проиграть MP3 !!!


14-59434
Agent Smith
2002-10-30 17:24
2002.11.18
VirtualCD & WinXP