LinuxForum.Fans
Тема

C vs Паскаль

Автор: deleted_user 77 сообщений 13012 просмотров
#108387

# два часа сучил ногами, и всё ж не утерпел

На сях, на пасквале, да хучь бы и на прологах каких -
упрётесь вы не в синтаксис, но в убогую логику первого порядка (а так же и высших порядков).

Ей присущи парадоксы - и что самое смешное, всем плевать.

Ну так суньте нос в ситуёвину, когда одновременно надо обработать
две-три одновременные исключительные ситуации (ошибки/аварийные ситуации/или ещё какого ёжика рожаем)
при наличии двух-трёх десятков вариантов поведения -

потом вместе посмеёмся над вышесказанным. Практически всем вышесказанным.

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

Или для вас это сюрприз?

PS Если "А" - то "не А" - чисто для развлекухи - вот как продукционная система должна обработать подобный промежуточный вывод?!

#108390

когда одновременно надо обработать
две-три одновременные исключительные ситуации (ошибки/аварийные ситуации/или ещё какого ёжика рожаем)
при наличии двух-трёх десятков вариантов поведения

э-э... не понял :(

А в чем проблема? МК как раз и занимаются этим исключительными ситуациями. Прерывания называются. Прерывания могут имеют приоритеты...
Прерывания приходят внезапно, недетерминировано по времени. Могут перекрывать друг друга. Да, как угодно! Это вообще реакция внешнего мира на внутренний мир работающего процессора.

Или я что-то не понял.

#108396

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

#108412
zhevak написал:
Или я что-то не понял.

Пардон за моё косноязычие.

Попробую ещё раз.

Речь идёт о совокупности правил "Стимул - Реакция",
при перекрывающихся областях определения,
и взаимоисключающих реакциях.

Для адекватности действий системы - правила должны быть упорядочены.
Если их много - задача либо нетривиальна, либо, что чаще, просто невыполнима.

Примеры -
промышленные АСУ,
а ещё "лучше"/нагляднее в плане оценить бессилие нынешней нашей логики -
системы машинного перевода с одного естественного (человечьего) языка на другой -
"учёт контекста" эта беда называется.

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

#108467
zhevak написал:
Но я почему-то не знаю НИ ОДНОГО программиста, кто бы писал системные вещи (для МК, в частности) на Паскале.

Jedem das Seine. Паскаль никогда не предназначался для системного программирования. Вот для прикладной разработки - пожалуйста, и все нужное есть.

zhevak написал:
Чем же тогда объяснить непопулярность Паскаля, если не его неуклюжестью?

За каждым языком/платформой стоит кто-то, кто его продвигает и поддерживает. За С\С++ стоят вековые традиции, за Java - Sun, а теперь Oracle, за C#/.NET - MS, ну и так далее. Паскалем плотно занималась Borland, и пока у нее дела шли хорошо, Паскаль использовался весьма и весьма широко. Потом по разным причинам проект Delphi практически загнулся, ну и Паскаль вслед за ним вышел из моды.

zhevak написал:
Почему нужно детей мучить какой-то хренью типа Паскаль?

А зачем их мучать хренью типа С? Взять бы сразу какой-нибудь Python или вообще PHP - простой, аки валенок :)
Если серьезно, то нет разницы, какой конкретно хренью их мучать на этом этапе. Сложилась традиция учить на Паскале, и нет объективных причин ее ломать.

#108479
Iskan Der написал:
Jedem das Seine

Это Ваш знакомый, с которым Вы поддерживаете контакт, или это широко известное имя в узких кругах?

Паскаль никогда не предназначался для системного программирования.

И это еще один большой минус для Паскаля и подтверждение его непопулярности.

Вот для прикладной разработки - пожалуйста, и все нужное есть.

Да ну! И насколько этим удобно пользоваться? Давайте не будем натягивать желания на реальность.

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

... и нет объективных причин ее ломать.

Конечно, выход из "моды" языка и гибель последнего крупного игрока -- это не причина.
Не важно, что сейчас кузнечное дело не кормит, зато какие красивые оградки можно делать... Будем продолжать готовить кузнецов. А когда поймут, как работать с металлом, сами переучатся на штамповщиков, токарей, слесарей и литейщиков. И в самом деле, кудато ж ведь надо девать знания учителей кузнецкого дела!

Ну не верю я, что на С нельзя научить детей тому, чему их учат на Паскале. Ну не верю я, что программист воспитанный на Си менее способен, чем тот, кого выучили на Паскале. Или понимает программирование как-то извращенно, не правильно. Скорее наоборот! Си дает более четкое понимание, как комп работает, и что с ним (при помощи программ) можно делать.

Традиции -- это наше все! Инерция в мозгах. Результат не важен, важен процесс. А чему учим -- да пофигу! Кому надо сам научится. Кому не надо -- какая разница чему его учить?

#108521
zhevak написал:

Да ну! И насколько этим удобно пользоваться? Давайте не будем натягивать желания на реальность.

Вполне удобно.
Говорю не просто так, а по опыту реальных проектов. Не считая всяких утилиток, что я написал для облегчения некоторых своих действий. Одна работает в энергетики обрабатывая данные в реальном времени (его, кстати, писал уже после перехода на С++ и дискомфорта ни какого не было), вторая проект живущий и процветающий вот уже более 10 лет (до сих пор 3-я делфа) - биллинговя система.
В прочем я перешел на С++. Но совсем не из за удобности/неудобности.

#108525
zhevak написал:
И это еще один большой минус для Паскаля и подтверждение его непопулярности.

Ага, с таким же успехом можно сказать, что неспособность нормально забивать гвозди является большим минусом микроскопа. Язык - это инструмент, который создается для решения опеределенного круга задач. На том же С никто не пишет, скажем, веб-приложений (в здравом уме, во всяк) - тоже признак непопулярности? :)

zhevak написал:
Да ну! И насколько этим удобно пользоваться? Давайте не будем натягивать желания на реальность.

Рискну предположить, что вы и не пробовали, так что ваши негативные суждения основываются на общем впечатлении от какого-нибудь TurboPascal 7.0. В общем, вполне себе удобно, и долгое время Delphi была одной из самых популярных платформ разработки под Win32, пока Borland не сдулась.

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

А кто говорил, что выученный на С программист будет глупее воспитанника Паскаля? Плюньте в глаза этому человеку. Речь шла о том, что на уровне базы, основ т.е., нет вообще принципиальной разницы, на чем учить. Это примерно как в автошколах: люди учатся водить на допотопных "Жигулях" и "Москвичах", а потом с полученными навыками спокойно пересаживаются в нормальные современные авто.

#108536
voral написал:

Вполне удобно.
Говорю не просто так, а по опыту реальных проектов.

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


В прочем я перешел на С++. Но совсем не из за удобности/неудобности.

Вот это-то и является загадкой, что же это такой хороший удобный язык и вдруг перестал быть популярным у программистов. Я говорю не о системщиках, кто ближе к железу, а о прикладниках, которым пофигу, что там под капотом происходит. Они-то что слезли с языка? Из-за чего? Кто их согнал? Почему не смогли или не захотели поддерживать линейку Паскаля-Делфи далее? Ведь если есть реальная потребность, то коммерсанты всегда найдут свою выгоду.

Объясните пожалуйста.

#108542
Iskan Der написал:
[quote=zhevak]И это еще один большой минус для Паскаля и подтверждение его непопулярности.

Ага, с таким же успехом можно сказать, что неспособность нормально забивать гвозди является большим минусом микроскопа. Язык - это инструмент, который создается для решения опеределенного круга задач. На том же С никто не пишет, скажем, веб-приложений (в здравом уме, во всяк) - тоже признак непопулярности? :)
[/quote]
Ага. Язык не предназначен для системного программирования. Факт. Вэб -- тоже не его стихия. Но он также не популярен у прикладников. И только в школах с его помощью продолжают вдалбливать основы программирования. Что не так в Датском королевстве?

zhevak написал:
Да ну! И насколько этим удобно пользоваться? Давайте не будем натягивать желания на реальность.

Рискну предположить, что вы и не пробовали, так что ваши негативные суждения основываются на общем впечатлении от какого-нибудь TurboPascal 7.0. В общем, вполне себе удобно, и долгое время Delphi была одной из самых популярных платформ разработки под Win32, пока Borland не сдулась.

В молоко!
Удобно? -- Не спорю, сам писал. До поры до времени.
Делфи -- это такой же Паскаль, какой С++ по отношению к С.
Однако, и С, и С++ очень широко применяются. Делфи в разы меньше. А Паскаль вообще ушел за горизонт вместе с ДОС-ом.
Дак, тема заявлена на обсуждение живущего ныне С++ и умирающего Делфи, или все еще здравствующего С и уже покойного Паскаля?

"Ну не верю я, что на С нельзя научить детей тому, чему их учат на Паскале. Ну не верю я, что программист воспитанный на Си менее способен, чем тот, кого выучили на Паскале."
А кто говорил, что выученный на С программист будет глупее воспитанника Паскаля?

Ага, а раз нет разницы, тогда какой смысл сначала учить, а затем переучивать?

Речь шла о том, что на уровне базы, основ т.е., нет вообще принципиальной разницы, на чем учить. Это примерно как в автошколах: люди учатся водить на допотопных "Жигулях" и "Москвичах", а потом с полученными навыками спокойно пересаживаются в нормальные современные авто.

Расскажите это кому-нибудь другому! Обучение вождению -- это вообще иной процесс! Их нельзя сопоставлять. Ошибки в процессе обучения всегда были, есть и будут. Ошибки при вождении обходятся намного дороже, чем ошибки при программировании. Поэтому при обучении вождению автошколы вынуждены использовать недорогие автомобили. А для обучения программированию какой фактор, кроме отсутствия соответствующих знаний у преподавателей и многолетнего опыта, мешает использовать С вместо Паскаля?

#108567
zhevak написал:
Я говорю не о системщиках, кто ближе к железу, а о прикладниках, которым пофигу, что там под капотом происходит. Они-то что слезли с языка? Из-за чего? Кто их согнал?

Java (web, enterprise) :rolleyes:

#108599
Iskan Der написал:

Рискну предположить, что вы и не пробовали, так что ваши негативные суждения основываются на общем впечатлении от какого-нибудь TurboPascal 7.0.

Кстати, тоже вполне достойно. Я на нем писал свой первый серъезный проект - рассчет грозозащиты объектов с графредактором в трех проекциях....

#108606
zhevak написал:

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

Ну так и давайте тогда говорить, что вам он показался менее удобным. А не ставить штамп.
Или у вас просто манера все говорить как гвозди вбивать - со стороны кажется, что вы это считаете абсолютной истиной.

zhevak написал:
Вот это-то и является загадкой, что же это такой хороший удобный язык и вдруг перестал быть популярным у программистов. Я говорю не о системщиках, кто ближе к железу, а о прикладниках, которым пофигу, что там под капотом происходит. Они-то что слезли с языка? Из-за чего? Кто их согнал? Почему не смогли или не захотели поддерживать линейку Паскаля-Делфи далее?
Объясните пожалуйста.

Могу только на своем примере.
Заключил контракт, одним из условий было написание на C++. Да и проект ближе к железу. Потом ряд похожих проектов, в которые можно было брать прямо уже готовые классы из первого. Потом я перешел на линукс, и меня стал волновать вопрос кросс платформености. Каликс не рассматривал т.к. был наслышан о сырости. Да и С++ мне понравился тем, что он можно сказать застваил писать более грамотный код. Т.е. как конфеты мишка на севере и каракум и та и та нравится, но больше каракум. Почему не знаю. Так и здесь. Мне везде удобно.
А есть у меня коллега тоже занимается разработкой ведет: прогамму для ЖКХ, дла электриков. Он виндузоид до мозга. Он с Си покрайней мере был знаком. Однако он делфист и по сей день. И проекты его развиваются.

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

#108702
voral написал:
[quote=zhevak]
И я в свое время писал разные буховские проги на Делфи. И выглядели они красиво, и даже иногда влазили на (инсталляционную) дискету...

Ну так и давайте тогда говорить, что вам он показался менее удобным. А не ставить штамп.
Или у вас просто манера все говорить как гвозди вбивать - со стороны кажется, что вы это считаете абсолютной истиной.
[/quote]
Со стороны виднее. Спасибо за замечание.

zhevak написал:
Вот это-то и является загадкой, что же это такой хороший удобный язык и вдруг перестал быть популярным у программистов.
...
Объясните пожалуйста.

Могу только на своем примере.
...
Понятно, что делфистов меньше. С этим не поспорить, но дело совсем не в языке.

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

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

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

Паскаль канул в историю. Он сделал свою работу. И спасибо ему и его создателям за это! Но сейчас Паскаль -- это ветвь, которая ведет в никуда. Эта веточка оказалась очень короткой. Ее не имеет смысла развивать в силу каких причин (это вопрос к voral)? Эти причины -- это есть проблемы Паскаля?
Если нет, то почему С жив, а Паскаль мертв?

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


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

#108712
zhevak написал:
Язык не предназначен для системного программирования. Факт. Вэб -- тоже не его стихия. Но он также не популярен у прикладников.

Был очень даже популярен, но его вытеснили другие языки и платформы (та же .NET, например). Конкуренция, однако.

zhevak написал:
Делфи -- это такой же Паскаль, какой С++ по отношению к С.
Однако, и С, и С++ очень широко применяются. Делфи в разы меньше. А Паскаль вообще ушел за горизонт вместе с ДОС-ом.

С остался, главным образом, для системного программирования, где навороты в виде ООП не нужны и даже вредны. Pascal естественным образом эволюционировал в Object Pascal, так что любой разработчик, пишущий на OP, по факту использует и "тот самый" Pacal тоже, так что про уход за горизонт вы зря. А что Delphi сейчас мало используется - так на то свои причины:
1. Borland перестала заниматься своими IDE, продав этот бизнес кому-то там
2. MS активно продвинула/продвигает свою .NET с собственным языковым обеспечением.

zhevak написал:
Дак, тема заявлена на обсуждение живущего ныне С++ и умирающего Делфи, или все еще здравствующего С и уже покойного Паскаля?

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

zhevak написал:
Ага, а раз нет разницы, тогда какой смысл сначала учить, а затем переучивать?

Чему переучивать? Сортировка пузырьком в С делается принципиально иначе, нежели в Паскале? Учить надо матчасть, а не особенности конкретного языка (об этом уже говорил).
Опять же, по этой логике все, кто прошел обучение на С, на этом же С будут кодить до конца своих дней. Выбор языка на этапе обучения - не приговор судьбы, в конце-то концов. По факту, кто-то займется Java, кто-то .NETом, кто-то еще чем-то, т.е. "переучиваться" все равно придется. Формально, конечно, считается, что с С на Java перебраться проще, чем с Pascal, по факту - без разницы.

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

Во-первых, не знаю, как "у вас", но "у нас" учат водить и на Getz'ах, и на Lancer'ах, и на прочих недешеваых машинках в том числе. Дело не в стоимости, а просто у кого что есть.
Во-вторых, ошибки программистов бывают очень дорогими. Неаккуратно вильнув рулем, я могу поцарапать машину и попасть на сколько-то тысяч рублей на перекраску поцарапанной детали. Опечатавшись в каком-нибудь SQL-скрипте я могу на сутки парализовать работу целого отдела с куда менее приятными последствиями. Так что не надо.

zhevak написал:
А для обучения программированию какой фактор, кроме отсутствия соответствующих знаний у преподавателей и многолетнего опыта, мешает использовать С вместо Паскаля?

А этого фактора недостаточно? Стоит ли имеющиеся опыт и знания списывать только ради ничем не доказанной идеи, что детки, выученные на С, будут умнее деток, выученных на Паскале?

#108713
zhevak написал:

С жив, а Паскаль мертв

Разве это причина для того, чтобы прекратить изучение Паскаля? Конечно, нет! wink
Лучше задать вопрос, а почему C не изучают? И почему на него переходят только после изучения Паскаля? Что-то значит с ним не так? Не годится значит он для обучения, если столько поколений программистов воспитывались на Паскале?

P.S. Это просто логические выводы. Мне абсолютно без разницы.

#108719
mycetophylax написал:
[quote=zhevak]
С жив, а Паскаль мертв

Разве это причина для того, чтобы прекратить изучение Паскаля? Конечно, нет! wink
Лучше задать вопрос, а почему C не изучают? И почему на него переходят только после изучения Паскаля? Что-то значит с ним не так? Не годится значит он для обучения, если столько поколений программистов воспитывались на Паскале?

P.S. Это просто логические выводы. Мне абсолютно без разницы.[/quote]
C - это просто следующий уровень "просветления". Не всем дано его постичь. А паскаль поможет вырастить посредственных программистов на жаве, дельфи и всяких .NET.

#108735

Все. Сдаюсь. Я выхожу из игры. Мне сложно разговаривать ибо
сначала читаем тут №48

Iskan Der написал:
люди учатся водить на допотопных "Жигулях" и "Москвичах", а потом с полученными навыками спокойно пересаживаются в нормальные современные авто.

а потом тут №55:

Iskan Der написал:
"у нас" учат водить и на Getz'ах, и на Lancer'ах, и на прочих недешеваых машинках в том числе. Дело не в стоимости, а просто у кого что есть.

oO :D мне сложно свести эти высказывания во-едино. Это называется, измотай врага.

Iskan Der написал:

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

Извиниите, а мы вообще о чем говорим? О процессе начального обучения программированию или об производстве и внедрению ПО на живых предприятиях? Если об обучении, то какие могут быть вообще "параличи"? Каких "отделов"? А если о бизнесе, то ... месье, я тоже сказочник! Я еще и не такое могу натеоретизировать. :)

Короче. Беседа уже ни о чем. Я выхожу.

#108809
CyberDaemon написал:

C - это просто следующий уровень "просветления". Не всем дано его постичь. А паскаль поможет вырастить посредственных программистов на жаве, дельфи и всяких .NET.

Т.е. ты согласен, что сначала нужно изучать Паскаль, а уже потом С.

#108950

Лично я паскаль терпеть не могу - изучал его в школе уже после C, очень раздражали дурацкие ограничения (например, логическое условие не может выражаться целым числом, как в C, - надо явно сравнивать с нулем: if a <> 0 ...), ну и еще слабое знание языка сделало свое дело, из-за чего я посчитал, что некоторые вещи в нем невозможны или тяжелы, например, явное приведение типов - после красивого и очевидного сишного. Однако, несмотря на это, мне кажется, из ниши языка для обучения он еще нескоро уйдет. Вы не подумали о том, что этим достают не только будущих программистов, но также всяких экологов, экономистов, сталеваров и прочих гуманитариев? Представляете их глаза при виде сишных исходников, которые в силу неопытности автора еще и отформатированы коряво? ))). Там, где программирование не является профильным предметом, обычно изучают блок-схемы и алгоритмизацию, и паскаль тут со своей строгой нотацией, минимумом непонятных для новичка специальных символов и разделением программы на блоки - самое то.
Если же приоритетной делать простоту языка, то у бейсика больше шансов: программа на пяти строчках уже выводит красивый график, это может заинтересовать школьников, в то время как на паскале потребуется втрое больше писанины, поначалу отпугивающей своей непонятностью. Но C в школе я бы точно преподавать не стал, разве что факультативно. Что касается обучения студентов-программистов, то тут, имхо, C без вариантов - он и практически больше шансов имеет пригодиться, и синтаксис его в половине известных языков, и по мощности он ничуть не уступает паскалю, хотя познание всех его нюансов может быть нелегким. Только начинать надо ни в коем случае не с C++, ООП (тем более в монструозном варианте C++) уж точно не следует давать начинающим, не осилившим процедурное программирование, а то, я слышал, кое-где с него начинают обучение в вузах.

Насчет алгоритмов видел мнение, что без разницы, на чем реализовывать. Не соглашусь, существует целый раздел алгоритмов, посвященный динамическим структурам данных (списки, деревья, хэши), которые не реализуешь полноценно без указателей, а паскаль, насколько я знаю, с указателями полноценно не работает. Кнут эти алгоритмы описывает вообще на ассемблере. Кроме того, указатели и рекурсия - традиционно тяжелые темы для студентов, которые многие до конца так и не понимают, и степень владения ими позволяет отличить по-настоящему перспективного программиста от посредственности, это напоминает математику или латынь - практически почти не применимо из-за распространения языков вроде Java, но необходимо для правильного мышления. Недавно читал статью на эту тему - http://local.joelonsoftware.com/wiki/%D0%9E%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_Java

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