Pull to refresh

Comments 55

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

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


Правда ли что «программист» в вашем понимании — это обезьянка-кодер, который умеет нарисовать окошко в GUI builder'е и соединить его с БД? Конечно же с такими справится ПТУ, и дай мне бог никогда не пересекаться ни с ними ни с их продуктами (например в паспортной службе или в бухгалтерии). Страуструп конечно же неправ в том, что игнорирует наличие и потребность в таковых людях. Но представьте что мы рассматриваем нормальное ПО, для разработки которого всё ж таки нужно знать, хотя что такое O(N). Тут не обойтись без выпускников ВУЗов и тут-то Страуструп прав, и вы возможно тоже — эти выпускники не умеют программировать, несмотря на все красные дипломы. Только это не имеет никакого отношения к тому программированию, которому научат в ПТУ. И следовательно, создавать вот такое вот ПО некому, о чём собсно и речь.

Кстати, Страуструп ни разу не утверждает порочность профессионального образования. Наоборот, в конц статьи он утверждает что профессиональный программист должен иметь какое-никакое образование в той области, для которой он пишет программы.
да что за крайности? словно один птушник будет кодить против всего мира?

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

Ха!
Осмелюсь выразить своё мнение о том, что C++ абсолютно не запутанный, а напротив — весьма последовательный и логичный. Другое дело, что в нём достаточно много важных «мелочей», но это плата за практически безграничные возможности, которые данный язык предоставляет программисту.
Не могу согласиться. Чего особенного он дает-то?

Безграничные возможности дает и C, язык простой и логичный. Те же горизонты открывает и DigitalMars D, при этом оставаясь очень аккуратным. Кстати, сам Страуструп сейчас агитирует за D.

Чего в нем такого из возможностей, что не найти в альтернативах?

Язык C может и даёт безграничные возможности, но к сожалению возможности программистов, его использующих, не безграничны: в больших проектах C себя не оправдывает в силу процедурного подхода (в противовес объектно-ориентированному в C++).

D? Ммм, возможно… Хороший язык, но как-то не прижился (пока что?). У меня, правда, к нему личная неприязнь, хоть и абсолютно беспричинная (по-видимому, сказывается C++-фанатизм) =)

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

Си не оправдывает себя вовсе не потому, что он императивный, а потому, что предоставляет слабенькие средства создания и комбинирования абстракций.
Это сильно сказывается на разработке и поддержке больших систем.

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

D 1.0 очень простой, и документация у него толковая. Учится не в пример легче Си++.

>учитывая тот факт, что востребованность D-программистов на рынке труда также не слишком впечатляет

Это такой аргумент против получения новых знаний? Очень грустно.
Это такой аргумент против получения новых знаний? Очень грустно.

Знания должны быть применимы, а не просто «пылиться на полочке»…
А вы не думали о том, что изучение того же D может привести к каким-то новым, полезным, идеям и инсайтам, к профессиональному и личностному росту? Плюсующие, видимо, тоже об этом не думали.
Я думаю, что изучение того же Haskell действительно может привести к каким-то идеям и т.д. А язык D — те же яйца, только синтаксис местами проще.
Си не оправдывает себя вовсе не потому, что он императивный, а потому, что предоставляет слабенькие средства создания и комбинирования абстракций.

Каюсь, в данном случае у меня одно ассоциируется с другим. Огрехи обучения…
зря каетесь) императивная парадигма включает в себя и си, и плюсы, и яву и многое другое (вы про парадигму не писали вообще). А комбинирование абстракций это как раз и есть перефразированное и обобщенное ваше предложение об ООП и процедурном программировании.
Ну, слава Богу, во всём этом разнообразии терминов одно я знаю точно: функциональное программирование — совсем другая парадигма :)))
а кто говорил про функциональное)))тут вроде речь про процедурное и объектное, что является императивным, а не про функциональное
Это кагбэ юмор был. Never mind…
Простите, а какие именно большие проекты нельзя писать в императивном стиле? ОС? Сервера? Библиотеки, может, какие-нибудь?

Я абсолютно не согласен с этим утверждением. И согласен с Торвальдсом по поводу С++, но цитировать неприличны слова не буду.
А я разве говорил, что нельзя? Знаете выражение: «если нельзя, но очень хочется, то можно»? Вопрос в удобстве. И, к примеру, то же ядро Linux — явно не самый интуитивно понятный проектик ;)
А вы назовите проект в миллионы строк, который сохраняет интуитивность :)

В мирах Юникса крупнейшие проекты как писались на Си тридцать лет, так и пишутся до сих пор. Удел С++ — средние и большие. И то… Apache, GTK+, Гномячьи прилады, git — это все Си.

В Винде вообще набирает популярность С#. Почему? Воли у народу уже не хватает писать на плюсах.
Qt. Почти 18 миллионов строк. Сохраняет интуитивность.
Гм, согласен, красота редкая.

А вы видели их код изнутри? :)
я видел. Регулярно читаю. Вполне интуитивен и понятен. Четкая структура. Следование стилю
Мне тоже доводилось. Там довольно много хитрых способов с макрорасширениями языка; кстати, именно с такими штуками на С++ бывают проблемы при анализе.

Строго говоря, Qt — редкий вообще для всех языков фреймворк. Документация, логичность… Шик. Мне интересно было бы посмотреть первые версии инструментария.

Неужели с самого начала пара программистов практически сразу после универа могли такую роскошь сделать?

Тем не менее. Это ведь скорее исключение, нежели правило.
Я с куте работаю с третьей версии, там тоже было все вполне стройно (конечно не настолько как в четверке, но вполне), что было раньше не знаю.
Мне тоже неоднократно приходилось смотреть исходники.

И да, Qt 3 тоже была весьма недурна собой.
сам Страуструп сейчас агитирует за D

Кстати, не отказался бы об этом где-то почитать ;) Реквестирую линк.
Проверил.

Каюсь, перепутал. Это Александреску даже книгу написал. Впрочем, перепутал не со студентом. Авторитет у него тоже серьезный — лучше него темные уголки С++ мало кто знает.

Да ну его, это С++. Стандарт за стандартом они вливают нагромождение фишек, усложняют и усложняют… Бр. Отмороженная фигня.
Ну, это общеизвестный факт, что Александреску является основным популяризатором языка D.

А по поводу нагромождения фишек — это удел любого широко используемого языка или технологии. Рано или поздно он(а) разрастается до неузнаваемых размеров. Посмотрите вон на C# хотя бы…
а я могу кивнуть на Питон… :) Там небольшое и очень логичное ядро, возможности раскрываются по большей части в стандартной библиотеке. Используется достаточно широко и возраст уже нормальный.

Да и классический Си пока вполне адекватен.

Вот вы скажите… Если С++ — такой логичный, то где, блин, хотя бы однозначный стандарт или определение грамматики языка? Парсер практически невозможно сделать, это требует невероятных многолетних усилий, даже гламурная Студия не вполне с этим справляется.

Как был с самого начала лозунг «пихаем все что в голову придет», так и остался до сих пор. И мне страшно думать о том, что же они внедрят со следующе версией языка… Усложнят опять? Надмножество очережное? Еще два тома руководств и разъяснений?

Извините, но Python — боец другой весовой категории. А в C++ тоже стандартная библиотека играет не последнюю роль.

Да и в чём проблема со стандартом-то и парсером для него? Однозначный стандарт вполне. Это ж Вам не Malbolge…
Да не совсем, насколько помню, стандарт все же сложный и во многих местах решение остается на усмотрение разработчиков компилятора.

Собственно, чего я это вспомнил. Слежу постоянно за разработкой cedet — это комплект инструментов для анализа кода и фишечек вроде intellisense в Емаксе. Вот как раз там и обсуждаются периодически неявные моменты и проблемы, и их действительно много.
UFO just landed and posted this here
Невежество невежеством, а даже то, что имеется — та еще каша. Какая разница, сколько именно лет они принимают расширенную версию этого дела, если легче от этого не станет в любом случае?

Может, по темноте своей природной чего не знаю или C++xx вдруг что-то упорядочит в языке?
UFO just landed and posted this here
Что упорядочить? Честно говоря, не знаю. И мало кто знает, подозреваю. Поздно пить боржоми, как говорится… Масса старого кода, обратная совместимость, бла-бла-бла.

Тогда новый язык получится. Тот же D.

Или вам нужно что-то конкретное указать, что мне так не нравится? Могу взять Страуструпа и пройтись попунктно по главам.

ага, пройдитесь. Мне тоже интересно
>C++ абсолютно не запутанный, а напротив — весьма последовательный и логичный

Если бы у Си++ была формальная семантика, тогда и можно было бы говорить о *объективной* последовательности и логичности. А покуда ее нет — эти критерии субъективны.

>Другое дело, что в нём достаточно много важных «мелочей», но это плата за практически безграничные возможности, которые данный язык предоставляет программисту.

О каких «безграничные возможностях» вы говорите? Он что, вычисляет больше, чем машина Тьюринга? :)
Если бы у Си++ была формальная семантика, тогда и можно было бы говорить о *объективной* последовательности и логичности. А покуда ее нет — эти критерии субъективны.

Да я вроде как нигде и не утверждал, что моё личное мнение всецело претендует на объективность.
О каких «безграничные возможностях» вы говорите? Он что, вычисляет больше, чем машина Тьюринга? :)

Я считаю, Ваш сарказм по поводу машины Тьюринга здесь неуместен. Под «безграничными возможностями» я подразумевал возможность работы в этом языке как на низком уровне, так и на высоком, поддержку нескольких парадигм программирования и т.д.
Взять ту же Java (которая также тьюринг-полная) — про неё можно сказать то же самое?
> Да я вроде как нигде и не утверждал, что моё личное мнение всецело претендует на объективность.

Я специально сделал на этом акцент, чтобы отсечь все разговоры о якобы простоте и логичности Си++.

>Я считаю, Ваш сарказм по поводу машины Тьюринга здесь неуместен.

Это не сарказм. Улыбнуло просто :)

>Под «безграничными возможностями» я подразумевал возможность работы в этом языке как на низком уровне, так и на высоком, поддержку нескольких парадигм программирования и т.д.

Вот так бы сразу и сказали.

>Взять ту же Java (которая также тьюринг-полная) — про неё можно сказать то же самое?

Можно. Надо только костылями подходящего размера запастись. :)
Вот, кстати, пейпер по теме:
domino.watson.ibm.com/comm/research_people.nsf/pages/dgrove.vee09.html
Сойдёмся на том, что моё мнение по поводу логичности языка C++ настолько же субъективное, как и чужие мнения о том, что C++ — один из самых запутанных языков (:
Я бы присоединился скорее к мнению о том, что C++ не запутанный, но это скорее из за того, что я его не достаточно знаю.

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

[ASM]->[C]->[C++]->[C#] Поправте меня, но я считаю это эволюцией абстрагирования. Что вы знаете о больших проектах? Ядро линукс… Вы его сами делали?
На самом деле в университетах нас постоянно тыкают в эти «большие проекты», но что же это такое? Повторное использование кода — вот в чем сила эволюции абстрагирования, это как собирать компьютер, из песка->из транзисторов->на ИС->на БИС->на микрочипах->или из готовых комплектующих. Всё это системный анализ. Используется не только в программировании.
сишарп зря приплели. Не всегда нужен сборщик мусора, иногда гораздо проще без него (я не говорю про низкоуровневые задачи, там понятно. Я имею в виду в том числе и обычные настольные приложения).
уберите из списка Шарп… Или давайте тогда уж Яву. Она и раньше, и нишу свою плотнее скушала.

Я просто хотел показать эволюцию в одном языке(кроме ASM, это как бы промежуточная прослойка перед машинным кодом). А нишу # уже не маленькую занимает.
надо было не указывать автора статьи. я бы узнал Страуструпа — много текста, вроде все по делу, а вроде и в двух предложениях всё поместилось бы. не изменяет стилю со времен книг по С++ (:
«медецинской инженерии» — исправьте, пожалуйста
Спасибо за статью, но есть замечание к переводу.

которые, тем не менее, на занятиях по операционным системам быдлокодят с абсолютным пренебрежением
Грубовато для доктора философии :) Можно просто написать «программируют», т.к. имхо «быдлокодят» == «программируют с абсолютным пренебрежением».
Согласен, тоже порезало глаза, когда читал. Интересно посмотреть на это предложение в оригинале (лень искать).
В оринигале было «who nevertheless hack solutions in an operating systems class with total disregard»

Ну я предупреждал что перевод несколько художественный. Слово «программировать» в таком контексте мне кажется мягковатым, да и Страуструпу вроде бы тоже (ибо hack, а не develop или program). Слово «хакать» ничуть не лучше с точки зрения языка, чем «быдлокодить», зато последнее точно не имеет других оттенков (типа «взламывать» или «долго копаться в кишках программы и библиотеки с целью заставить таки работать одну фишку под одним специфичным браузером»)
hack solutions — он наверно про костыли в коде говорил
Думаю что нет. «hack» в данном случае — это глагол. Дословный перевод «who nevertheless hack solutions in an OS class» — «которые, тем не менее, хакают решения на занятиях по ОС»
Sign up to leave a comment.

Articles