Цитата
мм, я имел в виду, что из ныне популярных всё, кроме C++, учится на расслабоне за ≤ 2 месяца.
Скорее вопрос конкретной перестройки сознания с ООП на логические языки. Тоже самое наблюдается с функциональными языками, пытаюсь научить команду писать хотя бы UI с использованием Rx (это в огромном реактивном на 70% приложении), благо C# очень хорошо подходит для работы в функциональном стиле, но ведь тоже не идет.
И тут мы подходим к умению конструировать приложения которому никто не учит. Все мы выходим из универов, а некоторые и без оных (я самоучкой был, хоть и догонялся потом высшим для корочки), все отлично знают три принципа ООП, и при этом все пишут процедурные классы и думают, что так правильно. А потом приходишь в проект с заделом не на месяц или полгода, а на года и влезаешь в эти классы по 3000 строк кода, которые как-то обмениваются данными через события, и изменение одного свойства вьюмодели, может вызвать цепную реакцию по всему приложению, с сотней неоптимальных пробросов в UI и чтениями из базы. А самое главное начинаешь сам писать, и чувствуешь, что у тебя тоже получаются те же самые ошибки, ты пишешь такое же говно, нет получше конечно чем было, и стараешься сделать еще лучше, но базы очень не хватает, а потом наступает этап привыкания и не понимаешь, то ли проект исправляется, то ли ты к нему привыкаешь.
В универе учат многим языкам - на продвинутых специальностях сразу C# идет - у нас был Paskal, Delfi, Java (в обязательном порядке), ПРОЛОГ, может и Python кому дают - ну никак не пожалуешься что с языками не познакомили. И даже подход верный - язык используется как средство для решения задач. Но какие задачи - алгоритмы сортировки, типы данных, базовые представления о многопоточности (притом обычно за пределы lock {} оно не выходит), да пусть даже сложность алгоритмов - с математикой как я говорил обычно в ВУЗах все хорошо. Ну и вопрос зачем тогда разные языки использовать если используются только базовые конструкции - почему бы не показать чем они отличаются. Почему бы вначале не привить ООП с помощью Java, а потом не провести студента через все круги ада чистого объектного подхода, а затем дать для тех же задач Haskel. Научить выделять шаблоны проектирования на уровне рефлекса, но при этом думать по-разному с точки зрения разных подходов к проектированию кода. Чтобы языки не слиплись в массу - о мы на этом когда-то писали, а стали средством решения конкретных задач. Чтобы потом программисты выходили и не писали на плюсах вебсервисы, когда проект на WCF лежит в соседней сборке. Хотя про знакомство студентов с технологическим стеком, я вообще промолчу. Вот почему-то студент радиотехник на выходе из ВУЗа легко выделит схему операционного усилителя из мешанины мелкой рассыпухи и заменит ее микросхемой, которую умеет подобрать, а вот программист подобную задачу только в коде не решит.
А ну и плюсам конечно учить тоже стоит из разряда пощупать железо в тонких перчатках, вдруг кому понравится, хотя бы как мне в виде хобби.
Ухх, накипело...