Очередной холивар, с удовольствием буду наблюдать за развитием Начинал, как многие, с паскаля, в техникуме. Потом для себя выучил базовый С. Был приятно удивлен гибкостью языка. Как можно в цикле for убрать любой из параметров и он будет работать префиксные и постфиксные операции, а функции с переменным числом параметров - вообщем по сравнением с обычным паскалем - Си - это действительно прорыв в программировании. Всегда раздражало что в паскале есть процедуры и есть функции, а чем они отличаются - фиг поймешь. Да, кстати гораздо быстрей написать { }, чем begin end
amvoz Ну ладно, можно ли в твоем продвинутом С сделать так: var Volumes: Array['C'..'Z'] of TSomeRecord; if X in [12..34, 56, 78] then ... case Y of 1 : 23..34 : Это в с процедуры и функции одинаково обзываются...
beginner если мне не отшибает память, в паскале (как собссно и в делфи) процедуры не умеют возвращать значение. для этих целей в этих языках существуют ф-ции.\ K10 интересно, а можно ли в вашем любимом пасе замутить такое: Код (Text): ((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Интересно)))....как же вы тогда учили паскаль если не знать разницы между процедурой и функ))) функция после свого исполнения возращает какойто результат, и если я не ошибаюсь то он храниться в регистре EAX, или указатель на возвращаемое значение,а процедура такого не делает. она завершила свою работу и все!
XshStasX Тут один так "выучил" уже Паскаль, что не знает базового синтаксиса, а уже лезет сравнивать ЯП по "критериям"...
Без кавычек. И я нигде не говорил что его выучил. Я говорил, что на нём кодил, а сейчас нет, могу и забыть синтаксис. И я извинился между прочим. ...Что Вы там написали? Объявлен массив вижу. Дальше вижу оператор case. Если мне не изменяет память надо выбрать одного оператора из нескольких. С условием разобраться не могу. Ну, да можно так делать в С.
K10 окей. а вот так на поскале можна? Код (Text): (group '(a b c d e f g) 2) ((A B) (C D) (E F) (G)) или вот такое: Код (Text): (sort '(1 4 2 5 6 7 3) #'<) (1 2 3 4 5 6 7) или вот: Код (Text): (remove-if #'evenp '(1 2 3 4 5 6 7)) (1 3 5 7)
varnie Ну так по части возможности поизвращаться круче, чем Си, только Си++. Ну или Брэйнфак EvilsInterrupt Ой, много чего. Сплошь америкосские, правда, отечественных почти нет...
...Опять же Pascal Параметры-значения, параметры-переменные. Бился-бился я с ними. То ест понимаешь, потом забываешь, потом снова возвращаешься к книге. В С ничего этого нет. Он прост, как валенок. Вот параметры и всё. Функция возврщает только одно значение. Если надо больше- используем указатели. Указатель- переменная, содержащая адрес другой переменной. Строка- массив символов. Просто и лаконично.
Эти три отдельно взятых примера. Очевидно, Вы и Си знаете также как Паскаль... ужос, параметр-переменная это передача параметра по указателю. Т.е. однох..йственно: Код (Text): procedure SomeProc(var dwParam: DWORD); begin dwParam:=10; end; и Код (Text): procedure SomeProc(pdwParam: PDWORD); begin pdwParam^:=10; end;
В С можно объявить массив и третий третий пример тоже можно сделать. По-другому, потому, что синтаксис разен. Прикол-то в чём?
Почти оно, только поправь, чтобы начало массива a было по индексу 'C' а конец соответсвенно индекс 'Z'. С case поправь, чтобы одна ветка работала при значении 2, а другая ветка case'а - при значениях от 10 до 40
XshStasX Ошибка в том, что не всегда результат хранится в eax. Есть еще и st(0) и связка edx:eax (это стандарты). А у некоторых компиляторов вообще есть свои конвенции о передаче аргументов и возврате значений. K10 Вот только не надо притягивать суда язык(я о Си) это удел компиляторов. Есть в природе компиляторы Си'шные которые так же обходятся без lib'ов, а в место них используют к примеру def-файлы. lib-фаил это архив coff файлов, эдакий альтернатив omf'у (ну Баалу надо было задушить Borland'a ). Такой подход (я имею ввиду obj+lib или omf) дает возможность модульному программированию (хотя и кривому, так как они содержат скомпилированный код). А на fasm'е так же придется тянуть lib'ы если собирать coff-объектник, который в последствии можно скомпоновать с другими объектными файлами. Ну и в заключении взгляните на Си--, это конечно не чистый Си, но очень-очень похожий на Си и Ассемблер вместе взятые. Ему так же не нужны lib'ы. А так же я видел (вот только не помню у кого - у паскаля или ему подобному) unit файлы, это по моему тоже модули? GoldFinch Си не императивный, а процедурный, и lisp не только функциональный. varnie пока научишься программировать на lisp'e, разучишься говорить на собственном языке Да и вообще вот-это полный рулез: Код (Text): Sub MyProc (ByVal X As Integer) Do If X = WM_ХВАТИТ_СПОРИТЬ_ЧТО_ГУАН Then Break ' потому что только Basic полный Rulez :) Else Continue Loop End Sub У каждого языка есть свои плюсы и недостатки, и не зря наверное выбирают паскаль и бейсик в качестве языка программирования в учебных заведениях вместо "более низкоуровневому" Си и мега крутому Си++ Хотя все выше изложенное это моё ИМХО.