В течение последних более чем 15 лет на
нашем факультете для начального обучения студентов программированию используется язык программирования
Паскаль, который изучается в рамках курса
«Алгоритмы и алгоритмические языки». В последние годы все чаще высказываются мысли о том, что не пора бы его заменить, например, на
Си. Мой коллега по
кафедре,
(
Read more... )
Я всегда говорил, что язык определяет способ мышления. Паскаль строг. Иногда, как мне кажется, слишком. Может это хорошо, а может и нет. ИМХО трудновато человеку учившемуся на Паскале что-то новое создавать. Не совсем творческий язык.
Ещё мне не нравится это вавилонское смешение. На чём только люди не пишут. Каждый, естественно, выбирает под себя язык, но когда приходится собирать всё вместе... И рождаются всякие многоязычные тяжеловесные среды. Ежели под себя выбирать язык, это значит идти на поводу у своего способа мышления, тогда как один проект лучше в едином духе выдержать. В итоге всё упирается в это: "ошибки времени исполения, компиляции, программирования, обучения"
Си хорош, т.к. это язык системного программирования. Мне приходится работать со специфическими программами: Ansys, Marc. Они занимаются моделированием физических процессов. Вся, подчёркиваю, вся работа с ними - сплошные танцы с бубном. В современном мире просто отсутствует культура написания больших важных программ такого рода. К тому же это именно сложные системные программы, для которых нужен системный язык программирования. Покупаешь для неё один из новейших процессоров - всё ей мало. Разучились оптимизировать. А я как вспомню принца Персии 1990 года, который у меня до сих пор на i80486 SX бегает... Ляпота.
И если мы планируем потом писать программы на Си, как на надёжном языке с качественными компиляторами, то зачем обучать на Паскале ? Он сформирует паскальский образ мышления.
А может виноват вовсе не язык ? Мне кажется, что если уж приниматься за улучшение обучения программированию в ВУЗах, то можно найти и более влиятельные факторы, чем язык программирования. Начать с преподавателей и учебников. А то они написаны в жанре книг по чёрной магии: только так и не иначе, а почему умалчивается. Вспоминается книжка про Гарри Поттера и принца-полукровку, где он нашёл книгу заклинаний с рукописными пометками, в оторых заклинания модифицировались, и его споры с девочкой-отличницей-зубрилкой Гермионой по этому поводу.
Reply
Строгость Паскаля как раз и для того полезна, чтобы mental burden уменьшить до съедобного уровня. Его задача в том, чтобы дать пощупать основные понятия (последовательное исполнение, передача управления, переменная, подпрограмма, передача параметров, рекурсия, сложность алогритмов, структуры данных, абстрактные типы данных -- уже довольно!), но не закапываться куда-либо подробно.
А вот потом уже можно нырять в нечто более сложное, сохраняя системность мышления и не утопая в деталях.
Один мой коллега по промышленности очень ценит Паскаль (образца Borland Delphi) именно за строгость, за то что "компилятор не даст расслабиться, что-то упустить". Очень любит добиваться компиляции без единого предупреждения от компилятора. А я ценю Питон и шелл за rapid prototyping ;) Конечно, это все от задачи зависит, плюс сильно завязано на производственный процесс (есть ли ниже по течению тестирование, которое отловит косяки в run-time, или же нужно затягивать гайки на уже стадии компиляции).
Про образ мышления - indeed! Думается, что если кто подаёт, тот всегда выигрывает первый язык используется потом для всех-всех задач, то это полнота эта одностороння и в чем-нибудь придется винить любой язык, оказавшийся первым. Выбрать язык (способ мышления) и средств, подобающее задаче - вот умение специалиста. Некоторые, правда, намекают, что в любой достаточно сложной программе со временем появляется ущербная, неполная и ошибочная реализация Лиспа, что как бы претендует, и начальные погружения в первокурсный MIT-шный SICP меня в этом начали убеждать.
А единицы транзакций в секундук и гигабайты неотключаемых логов на моструозном оборудовании - это да, такое встречается все чаще. Хотя, мне кажется, это в основном касается заказного ынтырпрайза, в котором нужна экономия в производстве, независимость от вендоров, интеграция неизменяемых существующих комплексов, и прочие печальные занятия. А скажем, какой-нибудь гугль, который сидит себе на 80-м порту, он, я думаю, внутри более или менее. Хотя, читал я их coding conventions, они на C++ запрещают исключения - для совместимости с legacy-кодом %)
А в целом непонятно пока, что делать. Много практики и подражание лучшим образцам? %)
Reply
Leave a comment