Она является холиваром, причём в рунете (а точнее в FIDO) первой известной войной. Что такое "холивар"? Это Священная Война, где нет победителей. Тут хороши все средства. Кроме:
1) Этот форум - НЕ овуляшки. Прежде чем писать здесь, почитайте правила. Они и здесь действуют. Такие дела.
2) Нельзя переходить на личности. Точнее можно, только не на этом форуме, не в этом разделе, и не в этой теме.
3) Нельзя постить необоснованный бред. Если вы высказываете своё мнение, потрудитесь подкрепить его доказательствами.
1. Книги которые можно было купить в начале 90х годов были только про pascal. Именно тогда у меня появился первый комп. Если не считать ATARI и SPECTRUM
2. Брат изучал именно Pascal/ObjectPascal/Delphi и у меня не было выбора. На чем он, на том и я. Есть у кого спросить.
3. С\C++ очень не четабельный язык. Это для меня довольно веская причина.
4. Я учился в Самаре на ИТ и нам не давали выбор. Только Pascal.
5. Почти все лицеи/институты/университеты учат только на паскале. Исключение факультеты выпускаемые именно программистов.
Чего вспомню, еще напишу.
Hvzh написал:
писать нужно много и упорно. Но не на паскале, а, хотя бы, на с++
Pascal ни чем не хуже. На нем можно писать замечательные программы ни чем не хуже сишных. Ну будут они жрать больше памяти и весить больше.... это не критично. Для FPC много библиотек и конкретно для Linux есть Lazarus. Проект развивается и очень даже не плохо.
UPD: Вспомнил один курьезный случай. Был у меня зачет по паскалю и почти вся группа не могла написать ни одной программы. Когда преподаватель вышел на некоторое время мы с братом кинулись всем писать программы. В итоге меня застукали распластавшегося на парте а братана в другом углу комнаты. Препод нам сразу не зачет и выгнал. Пришлось потом покупать зачет и то только троечку. Обидно ))
хуже-не хуже... Это знаменитый холивар. Я вам одно скажу: программист знающий паскаль может найти только одну специальность: учитель информатики. И то, если осилит педагогический. Одно хорошо - учится и работать будете с одними девчонками ;)
ЗЫЖ паскаля не знаю, и не знал никогда. да и не узнаю видимо.
ЗЗЫЖ где-то в сети были переводчики C <-> паскаль. Глючные, но одну программу перевести можно (с ручной правкой).
Я вам одно скажу: программист знающий паскаль может найти только одну специальность: учитель информатики
Идея сих занятий не в том, чтобы выучить паскаль, а в том, чтобы научиться программировать в целом, т.е. составлять алгоритмы решения задач и записывать их на каком-то языке. Паскаль удобен тем, что позволяет сконцентрироваться именно на алгоритме, не отвлекаясь на всевозможные низкоуровневые моменты вроде работы с указателями и т.п., да и синтаксис вроде как попроще для тех, кто впервые с программизьмом сталкивается.
Если человек научился программировать на паскале, то он без большого труда выучится и на С, и на всем таком прочем.
Паскаль удобен тем, что позволяет сконцентрироваться именно на алгоритме, не отвлекаясь на всевозможные низкоуровневые моменты вроде работы с указателями и т.п., да и синтаксис вроде как попроще для тех, кто впервые с программизьмом сталкивается.
А теперь скажите, ГДЕ тут "указатели, которые отвлекают от алгоритма"?!
Вот в каждой строке писать :=, и через строку begin, end - это действительно напрягает.
Здесь их нет, но если студень полезет за примерами кода в интернеты или сопутствующую литературу, то найдет много ужаса. Паскаль в этом плане несколько гуманнее. Ну а уж писать там "=" или ":=", "begin"/"end" или "{"/"}" - чисто дело привычки. Всяко лучше, чем If...End If ;)
В целом же, пресекая холивар, отмечу, что паскаль, может, и не является идеальным языком, но для обучения основам годится более чем. Собственно, для промышленной разработки в лице Delphi он тоже был весьма неплох, жаль, что сия среда загнулась, ну да ладно.
Здесь их нет, но если студень полезет за примерами кода в интернеты или сопутствующую литературу, то найдет много ужаса. Паскаль в этом плане несколько гуманнее.
я так не думаю. ЯП == ящик с инструментами и набор строй-материалов. C - это очень богатый набор, причём Сишными "отвёртками" можно закручивать "гвозди", а Сишными "молотками" забивать "шурупы". Это не мешает писать на изящные конструкции, вроде
text
if(x = function(parametrs))
{
/* здесь выполняется обработка того, что вернула функция
но только тогда, когда она что-то вернула */
}
Такой стиль (и саму возможность) многие считают ошибкой, но мне кажется, что это полезный и удачный инструмент. Тело оператора if тут выполняется лишь тогда, когда функция "что-то вернула". В 95% алгоритмов это эквивалентно x != 0.
Или вот ещё классический пример:
text
while(*d++ = *s++)
;
Этот пример похож на exp(-i*pi) == -1, тождество, которое связывает не слишком понятные величины в одну изящную конструкцию.
Я уж не говорю про оператор goto, который в некоторых случаях позволяет избежать использования тяжеловесных и кривых костылей (а при неумелом использовании превращает программу в быдлокод). Таким приёмам нигде не учат, учат паскалям и прочим кумарам, что и приводит в конечном итоге к обилию быдлокодерства (который чуть менее везде, ибо везде именно сишный синтаксис и именно сишная идеология).
Да и вообще, открывая файл на любимом паскале, мы задаём его имя как сишную строку, как-бы от нас это не скрывали. Пользуясь любой библиотекой (хоть доступ к ядру, хоть наоборот, доступ к GUI), мы сопрягаем программу с С. Потому-то и загнулся паскаль (в т.ч.), потому, что даже разработчики устали писать прокладки от языка к внешнему миру. Ибо внешний мир на С, и программе на С нет необходимости в интерфейсе - функции чего угодно становятся органичной частью программы.
И ещё: "в мире велосипедов" некой мелкой и мягкой корпорации нет нужды знать, что лежит в MessageBoxA - мы этого всё равно не узнаем. В мире Свободного ПО часто есть смысл заглянуть в исходники того, что мы используем - часто 10 строк исходного текста заменяют over9000 страниц разных мануалов. А исходники написаны на чём угодно, но только не на паскале, т.е., представляют собой для пасквилиста НЕХ. (в смысле, проще hex коды дизассемблировать, чем смотреть сырцы).
Iskan Der написал:
Всяко лучше, чем If...End If
что-то я забыл... что смешного в if...End if?
PS: Да, между паскалем и C существует очень глубокое отличие:
На самом деле, С намного ближе к компьютеру, чем паскаль: это видно даже на примере присваивания, если в паскале := это некая конструкция языка; то в С это оператор, который выполняет операцию над левым выражением. Точно также, как и операция x++, которая увеличивает x на единицу. Здесь С уже плавно переходит в С++, в котором x= y, это на самом деле некий метод, который прибит гвоздями к x, и не имеет никакого смысла сам по себе (а с неким z будет обладать совсем другими свойствами). Таким образом, выражение if(x=y) может прочитать неправильно лишь паскалист (или там любитель бейсика и т.д.). Человек, который ЗНАЕТ C безошибочно определит в этой конструкции if(x.operator=(y)), т.е. некий оператор над x, результат которого равен результату операции (К.О.), т.е. новому значение x.
В паскале x:=y является конструкцией языка, и сама по себе не может иметь никакого результата. Потому-то паскалисты так болезненно реагируют на if(x=y) или x=y=z, или даже x=y+=z. И тем не менее, конструкции вроде последней выполняются намного быстрее, чем паскалевские аналоги. Конечно, в таких простых случаях и компилятор сможет сообразить, и свернуть паскалевскую конструкцию к сишному виду, а далее её и выполнить, но... В жизни не бывает примеров из учебников.
Да что там говорить: помнится, в описании одного запутанного алгоритма сам Вирт признался, что "язык дескать плохо заточен для работы со сложными структурами данных". (где пруф - честно, не помню).
C - это очень богатый набор, причём Сишными "отвёртками" можно закручивать "гвозди", а Сишными "молотками" забивать "шурупы". Это не мешает писать на изящные конструкции, вроде
text
if(x = function(parametrs))
{
/* здесь выполняется обработка того, что вернула функция
но только тогда, когда она что-то вернула */
}
...
Или вот ещё классический пример:
text
while(*d++ = *s++)
;
Вижу необходимость повториться: студентов на паскале учат основам программирования. Дана задача, нужно придумать алгоритм ее решения и записать его на каком-то ЯП. Все. На этом этапе всевозможные синтаксические навороты, специфичные для конкретного языка, не только не нужны, но и вредны. Все равно что курсантов какой-нибудь автошколы с первого занятия пытаться "заодно" научить делать полицейский разворот.
drBatty написал:
Потому-то и загнулся паскаль (в т.ч.), потому, что даже разработчики устали писать прокладки от языка к внешнему миру.
Насколько помню, в паскале импорт функций из динамических, скажем, библиотек никакой трудности не представлял. Да и никуда он не загнулся, свою основную - академическу - функцию выполнять продолжает.
drBatty написал:
И ещё: "в мире велосипедов" некой мелкой и мягкой корпорации нет нужды знать, что лежит в MessageBoxA - мы этого всё равно не узнаем. В мире Свободного ПО часто есть смысл заглянуть в исходники того, что мы используем - часто 10 строк исходного текста заменяют over9000 страниц разных мануалов. А исходники написаны на чём угодно, но только не на паскале, т.е., представляют собой для пасквилиста НЕХ. (в смысле, проще hex коды дизассемблировать, чем смотреть сырцы).
Так и знал, что не удержитесь от упоминания своей любимой корпорации :)
Так вот:
а) ну накукуй студенту-первокурснику, который только-только учится массивы пузырьком сортировать, исходники MessageBoxA?
б) тезис про то, что исходники лучше мануалов мне представляется сомнительным; кто считает иначе, пусть почитает исходники того же NVelocity и расскажет мне, как в его шаблонах использовать числа с плавающей точкой - буду весьма благодарен :)
drBatty написал:
что-то я забыл... что смешного в if...End if?
Вообще ничего. Это воспоминание из моей бурной молодости, связанной с LotusScript'ом :)
Вижу необходимость повториться: студентов на паскале учат основам программирования. Дана задача, нужно придумать алгоритм ее решения и записать его на каком-то ЯП. Все. На этом этапе всевозможные синтаксические навороты, специфичные для конкретного языка, не только не нужны, но и вредны. Все равно что курсантов какой-нибудь автошколы с первого занятия пытаться "заодно" научить делать полицейский разворот.
ну так вот. я КАТЕГОРИЧЕСКИ ПРОТИВ такого обучения, ибо оно плодит быдлокодеров. Что плохо. Это всё равно, что обучать вождение в автошколе на велосипеде. Сам подход к программированию подразумевает ассемблер, ну или С. Ну или (как высшую абстракцию) С++. Паскалю не место в обучении, ибо это мертворождённый язык программирования. Тем более для основы.
Iskan Der написал:
Насколько помню, в паскале импорт функций из динамических, скажем, библиотек никакой трудности не представлял. Да и никуда он не загнулся, свою основную - академическу - функцию выполнять продолжает.
Если серьёзно, то это как раз и плохо, что он выполняет "академическую" роль. Уж лучше BASIC.
Iskan Der написал:
Так и знал, что не удержитесь от упоминания своей любимой корпорации smile
Так вот:
а) ну накукуй студенту-первокурснику, который только-только учится массивы пузырьком сортировать, исходники MessageBoxA?
б) тезис про то, что исходники лучше мануалов мне представляется сомнительным; кто считает иначе, пусть почитает исходники того же NVelocity и расскажет мне, как в его шаблонах использовать числа с плавающей точкой - буду весьма благодарен
@) да. таки не удержался ;)
а) что-бы не писать быдлокод.
б) что такое NVelocity?
3. С\C++ очень не четабельный язык. Это для меня довольно веская причина
ЩИТО?
xlin написал:
4. Я учился в Самаре на ИТ и нам не давали выбор. Только Pascal.
5. Почти все лицеи/институты/университеты учат только на паскале. Исключение факультеты выпускаемые именно программистов.
я КАТЕГОРИЧЕСКИ ПРОТИВ такого обучения, ибо оно плодит быдлокодеров. Что плохо. Это всё равно, что обучать вождение в автошколе на велосипеде. Сам подход к программированию подразумевает ассемблер, ну или С. Ну или (как высшую абстракцию) С++. Паскалю не место в обучении, ибо это мертворождённый язык программирования. Тем более для основы.
Почему сразу быдлокодеров? И что в таком обучении плохого? Обоснуйте уж.
Про ассемблер не спорю, его имеет смысл знать хотя бы для того, чтобы понимать "аппаратную" подноготную всего, что делается. Когда же речь идет об основах программирования на ЯВУ, тут выбор конкретного языка уже не особо роляет. Если продолжать ассоциацию с автошколами, то человека учат базе: как тронуться, как остановиться, как войти в поворот. Нет никакой разницы, на чем он будет учиться: на ВАЗовской копейке или гоночном автомобиле; педали-руль-рычаги там те же самые по сути.
drBatty написал:
Если серьёзно, то это как раз и плохо, что он выполняет "академическую" роль. Уж лучше BASIC.
Чем плохо-то? Он же для обучения нужен. И чем BASIC лучше?
drBatty написал:
а) что-бы не писать быдлокод.
б) что такое NVelocity?
а) Где связь? Или мало на свете быдлокода, сделанного на открытых фреймворках и платформах? Да мегатонны.
б) порт Velocity на .NET :)
Почему сразу быдлокодеров? И что в таком обучении плохого? Обоснуйте уж.
в паскале применяется абсолютно другой подход, совсем не такой, как в C. Обрисовать его можно так - паскаль - академический ЯП, т.е. на нём хорошо писать примеры, или скажем какие-то задания для студентов. Никто и не скрывает, что именно для того он и был написан. И написан хорошо, с этим тоже не поспоришь. Беда паскаля в другом: в жизни не бывает примеров. Такие дела...
Совсем другое дело С - он был написан исключительно для дела, как некий "макроассемблер", который можно легко положить на любую архитектуру. На самом деле, концепция указателей в C - это не фича С. Это фича процессоров тех лет (да и современных тоже). Тоже самое можно сказать и про концепцию операторов присваивания - они также пришли из CPU. Именно операторов, а не оператора, ибо в большинстве машин тех лет, любая арифметическо-логическая операция приводила к изменению некой переменной. Т.е. не было операции
text
a = b + c;
За то была
text
a = a + b;
Что, естественным образом, и привело к появлению конструкции
text
a += b;
Так было в начале, а потом процессоры конечно развивались. Развитие пошло с положительной обратной связью, язык прогибался под CPU, а CPU - под язык. Мало кому были интересны языки Списков(вроде LISP) и академические ЯП вроде паскаля - нужен был C, и всё делалось для С.
Важно отметить, что CPU также оптимизировались под существующие OS, но эти OS были написаны исключительно на С.
В итого, по факту, язык С одержал сокрушительную победу, вытеснив все другие ЯП. Новые ЯП также пишутся исключительно с Си-подобным синтаксисом, и отход от парадигмы С наблюдается лишь для каких-то специфических особенностей.
Iskan Der написал:
Если продолжать ассоциацию с автошколами, то человека учат базе: как тронуться, как остановиться, как войти в поворот. Нет никакой разницы, на чем он будет учиться: на ВАЗовской копейке или гоночном автомобиле; педали-руль-рычаги там те же самые по сути.
дык в том-то и дело, что паскалевские "педали" совсем другие, а руль - так вообще отсутствует. Я конечно понимаю, ездить на транспорте без руля безопаснее, но это автошкола, а не трамвайное депо!
Iskan Der написал:
Чем плохо-то? Он же для обучения нужен. И чем BASIC лучше?
BASIC можно выучить за пару-тройку часов, это очень простой ЯП. И с той-же лёгкостью его забыть, изучая С млм какой-нибудь другой ЯП. Паскаль предполагает кропотливый и вдумчивый подход...
...к тому, что никогда не потребуется на практике.
Iskan Der написал:
а) Где связь? Или мало на свете быдлокода, сделанного на открытых фреймворках и платформах? Да мегатонны.
б) порт Velocity на .NET smile
а) изначально, вопрос был про исходные тексты: "зачем студенту исходники?" Ответ прост: если студент в них заглянет, а он заглянет, если сможет, то он увидит код, который написан профессионалами. И сам будет писать как профи. Но если исходники закрыты, то у него будут только 2 примера из MSDN. Допиливая их под свою задачу, такой студент 777 раз наступит на 666 хорошо известных грабель.
б) что такое .NET?