LinuxForum.Fans
Тема

C vs Паскаль

Автор: deleted_user 77 сообщений 13014 просмотров
#108957
mycetophylax написал:
[quote=CyberDaemon]
C - это просто следующий уровень "просветления". Не всем дано его постичь. А паскаль поможет вырастить посредственных программистов на жаве, дельфи и всяких .NET.

Т.е. ты согласен, что сначала нужно изучать Паскаль, а уже потом С.[/quote]
Pascal и создавался, как язык для обучения программированию.

#108962
zhevak написал:
сначала читаем тут №48 ... а потом тут №55
...мне сложно свести эти высказывания во-едино.

Так и быть, помогаю осознать мною сказанное: кого-то учат на жигулях, кого-то - на лансерах, но на качестве обучения это несильно сказывается. Хорошим водителем становится тот, кто учился нормально и руки вырастил себе из нужного места, а не тот, кому крутая тачка в автошколе досталась.
В программизьме то же самое: хорошим разработчиком станет тот, кто хорошо понял суть, а не просто запомнил примочки "самого правильного ЯП". Уж не знаю, как еще эту мысль обрисовать, чтобы она стала очевидной.

zhevak написал:
А если о бизнесе, то ... месье, я тоже сказочник! Я еще и не такое могу натеоретизировать. :)

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

#108994
exoriens написал:
очень раздражали дурацкие ограничения (например, логическое условие не может выражаться целым числом, как в C,

Ну так это вроде как считается "минусом" (громко сказано, конечно, "минусиком" wink ) С. И то что компилятор не ругается на такое условие

text

if (i=j) {
...
}

тоже.

exoriens написал:

Представляете их глаза при виде сишных исходников, которые в силу неопытности автора еще и отформатированы коряво? ))).

Это да. Названия переменных, начинающихся с нижнего подчеркивания лично мне "режут глаза".
Но это уже такие мелочи, развивать эту тему думаю не стоит. smile

exoriens написал:

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

Тогда уж лучше JavaScript. Вот где простота и наглядность результатов! Да еще и кроме браузера ничего не надо.

#109001
zhevak написал:
Понятно, что делфистов меньше. С этим не поспорить, но дело совсем не в языке.

А в чем же тогда дело?

А все в том же маркетинге - борланд загнулся. Вон OS/2 что плохая ОС была? на мой взгляд нет. Ну вот школник, студент решает дайка я программировать буду идет на трекер.... И что? Будет качать уже старый дистр, когда рядом новеханькая вижуал студия.... Соответственно и обсуждается язык меньше... Чайников то нет - форумы не пухнут.
Но на нем пишут, и пишут не плохие продукты. Могу привести развивающиеся известные примеры. БизнесПак, FastReport. И это только те, которыми я до сих пор пользуюсь.

zhevak написал:

1. Вы так и не смогли ответить на поставленный вопрос. Задаю его еще раз -- почему:
>> хороший удобный язык и вдруг перестал быть популярным у программистов?

Финансовый крах копании борланд.

zhevak написал:

В основе С++ лежить С. С появлением С++ С не умер. В основе Делфи лежит Паскаль. С появлением Делфи Паскаль постепенно загнулся. На сегодняшний день Паскаль -- мертвый язык.

Нет. С и C++ ушли в параллельные языки. Pascal развился в Object Pascal. Это не параллельные языки. Это развитие одного языка.

zhevak написал:
Почему С в современном смог "найти работу", а Паскаль нет? Можно ли назвать это ущербностью языка?

Ну, а скажите для чего чистый C используется? "Чистый" Pascal рационально ли было когда либо использовать в этой области?
На мой взгляд Pascal и его дальнейшее развитие больше для прикладных задач. Такой у него путь развития.

zhevak написал:
2. Причем здесь Делфи? Это что вывод по теме "С против Паскаля"?

На мой взгляд нет языка Delphi. Это название IDE, интерпретатора. Ну на кряйняк борландовское название Object Pascal.

#109005
voral написал:
На мой взгляд нет языка Delphi. Это название IDE, интерпретатора. Ну на кряйняк борландовское название Object Pascal.

Если подходить совсем строго к этому вопросу, то в последних версиях Delphi в языке появился ряд нововведений (class helpers, перегрузки операторов и всяко такое прочее), и под это дело его переименовали в Delphi language.

#109036

Вот так и оказывается, что основные претензии основаны на мифах :-)

Приведение типов: C: (a_type)an_exptession; Pascal: a_type(an_expression).

Указатели: C, объявление: a_type *a_ptr; разыменование: *a_ptr; Pascal: объявление: a_ptr: ^a_type; разыменование: a_ptr^.
Вот что касается адресной арифметики, да, адресовать элементы массива указателем в C просто (a_ptr+5 и a_ptr[5]), в Pascal в этом вопросе строить выражения сложнее, приходится делать отдельный вызов inc/dec либо явно приводить тип к массиву, либо использовать псевдоним (var a absolute b): Inc(a_ptr, 5); p_type_array(a_ptr)^[5]; type_array(ptr^)[5]. Но это больше про массивы, нежели про работу с указателями. Насколько помню, в fpc и эти неудобства собирались устранить, кстати есть повод проверить, чем дело закончилось.

По поводу "языка Delphi" -- начиная не помню с какой версии этот диалект Паскаля официально начал называться Delphi Language.

#109071
Iskan Der написал:
да хоть BrainF**k

ага

zhevak написал:
Итак. Программы хранятся во flash. Оперативные данные размещаются в RAM. Хорошо. Вопрос -- А где тогда хранить константы? Это тоже данные, но данные, которые никогда не меняются?

используйте const. это ГАРАНТИРОВАНО запихает в память. Правда действует лишь в С++.

Iskan Der написал:
З.Ы. Скажем, в прикладной разработке для ПК макросы, как правило, нужны чуть более, чем вообще ни разу, так что их отсутствие вряд ли стало/станет для какого-то ЯП причиной вымирания.

да... конечно...
язык без макросов === sed
точка.

bormant написал:
По поводу C++ в качестве языка для обучения, простейший пример: все ли с ходу смогут прочитать и объяснить что означают:

уважаемый, кири.... недописано

#109082
Iskan Der написал:
Если подходить совсем строго к этому вопросу, то в последних версиях Delphi в языке появился ряд нововведений (class helpers, перегрузки операторов и всяко такое прочее), и под это дело его переименовали в Delphi language.

Значит я отстал от жизни. До сих пор изредка использую третью, плюс приходилось писать один проект на семерке..

#109098
drBatty написал:
язык без макросов === sed
точка.

Какой еще sed? При чем тут? о_О

#109158

используйте const. это ГАРАНТИРОВАНО запихает в память. Правда действует лишь в С++.
Для микроконтроллеров часто реализуют нестандартное расширение языка, добавят какие-нибудь модификаторы памяти, то же самое можно и в Pascal сделать. В Borland C++, помню, были _near, _far, _seg указатели, целая куча, и только благодаря сегментной модели памяти 8086-процессора в реальном режиме. Это не та тема, где можно достоинства или недостатки языка обсудить.

да... конечно...
язык без макросов === sed
точка.
Тоже не понял ). Если очень захочется макросов, можно использовать сишный препроцессор CPP или внешний макропроцессор m4, да хоть свой написать. Правда, если стандартного препроцессора нет, то большинство вообще препроцессор не будет использовать, не додумаются. От сишного препроцессора толку минимум: условная компиляция да простые подстановки, но чтобы языковые конструкции расширять, его мощи недостаточно. Все хочу m4 осилить

Это да. Названия переменных, начинающихся с нижнего подчеркивания лично мне "режут глаза".
Но это уже такие мелочи, развивать эту тему думаю не стоит
Названия переменных - фигня. Если начинающим сразу не показывать, как форматировать код, у них будет выровненная по левому краю мешанина без единого пробела, состоящая из всех символов, какие они найдут на клавиатуре, а особенно эпично это смотрится, если они уже изучили цикл for. Начинающие кодят недостаточно много, чтобы увидеть достоинства читабельного кода, выравнивать и разделять лексемы они нескоро начнут и из-за этого пострадают. В Pascal меньше используются специальные символы, больше кейворды, их-то придется разделять по крайней мере одним пробелом.

Ну так это вроде как считается "минусом" (громко сказано, конечно, "минусиком" wink )
Не сказал бы, удобно, и в то же время никаких неоднозначностей. Вообще, когда что-то пытаются запретить, это настораживает, ведь не использовать то, что есть, намного проще, чем использовать то, чего нет =). Лучше, имхо, иметь пару опасных, но необходимых и удобных изредка фич, чем полностью отказаться от них и городить неуклюжий код обходными путями, это с опытом постепенно приходит. К тому же, потенциально опасные операторы выявляются большинством компиляторов в виде варнингов.
#109162
Iskan Der написал:
Какой еще sed? При чем тут?

при том, что в sed нет...
да нихрена там нет. уродский ЯП. впрочем, как и пасквиль.

#109197
exoriens написал:
Вообще, когда что-то пытаются запретить, это настораживает, ведь не использовать то, что есть, намного проще, чем использовать то, чего нет =)

Бывает, что какую-нибудь фишку используешь случайно, пропустив, скажем, один знак "=" и получив условие:

text
if (x = foo()) {...

со всеми вытекающими. Компилятор сжует и не подавится, а программист будет гадать, куда старое значение x подевалось (особенно если дело под конец рабочего дня). Впрочем, все это дело опыта/привычки.

drBatty написал:
при том, что в sed нет...
да нихрена там нет. уродский ЯП. впрочем, как и пасквиль.

Интересный критерий. Тогда нормальный ЯП один - С++: в него впихнули практически все, что только нашлось :)

#109291
Iskan Der написал:
Компилятор сжует и не подавится,

не надо врать. компилятор будет ругаться. именно потому я и пишу if ((x = foo())).

Iskan Der написал:
Тогда нормальный ЯП один - С++: в него впихнули практически все, что только нашлось

вы таки удивитесь...НЕТ ТАМ НИХРЕНА!

#109297
drBatty написал:
не надо врать. компилятор будет ругаться. именно потому я и пишу if ((x = foo())).

Ни разу не видел, чтобы ругался. Мож ему опциев, конечно, для этого особых надо, не заморачивался настолько.

drBatty написал:
вы таки удивитесь...НЕТ ТАМ НИХРЕНА!

Не перестают меня плюсы удивлять. Вроде понапихато все и вся и еще немного, а все равно нихрена нет. Не ЯП, а черная дыра, не иначе :)

#109317
drBatty написал:
[quote=Iskan Der]Компилятор сжует и не подавится,

не надо врать. компилятор будет ругаться. именно потому я и пишу if ((x = foo())).
[/quote]Увы и ах.
[console]$ cat << EOF > t.c
> int i; int main(){ if(i=2) ; return 0; }
> EOF
$ gcc t.c
$ gcc --version
gcc (GCC) 4.4.4
Copyright (C) 2010 Free Software Foundation, Inc.[/console]
Нет, понимаю, шанс, безусловно, можно дать (-Wparentheses) или даже
[console]$ gcc -Wall t.c
t.c:1: warning: suggest parentheses around assignment used as truth value[/console]но это поведение не принято по умолчанию, правда?

#109320
bormant написал:
но это поведение не принято по умолчанию, правда?

-Wall

#109326

А там выше что-то другое написано?
Можно и -Werrror добавлять... Но! "это поведение не принято по умолчанию".

Именно поэтому "компилятор может ругаться", что отличается от "компилятор будет ругаться". Проехали.

Войдите или зарегистрируйтесь, чтобы ответить.