Leave a comment

vasiliystavenko April 20 2018, 10:32:35 UTC
> Разница в том, что Вы, судя по рассказу, знали чего хотите на момент получения профильного образования.

Я не получал профильного образования. Мне приходилось восполнять пробелы обучения задолго после моего образования. Когда я начал программировать в команде, я сразу увидел на сколько шагов впереди меня те, кто получил профильное образование - но не как java-программисты, а как программисты вообще.

> Как минимум можно выбрать более узкую специальность.
Узить специальность надо как можно позже. Чем более обширные сведения имеет человек на старте - тем для большего количества вакансий он подходит. Пять лет обучения не зря надо просиживать. Чем раньше человек начинает работать в компании - тем раньше он начнет сужение и углубление компетенций.
Я лично, начал с с++ просто потому, что это было круто. И я писал на нем все что под руку попадется. В итоге, я могу любой современный язык освоить за день. Большой челлендж был для меня потом освоить haskell. Но эта задача была для важной только потому, что я тоже считал, что это круто.

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

Это базис, а язык - это надстройка.

Reply

hunterms April 20 2018, 13:24:40 UTC
Перечисленный Вами базис для С++ тоже учится за месяц, даже не вставая с дивана. За два - три, если человек в первый раз в жизни видит ПК. Причём хорошая книга, вроде Кнута учит даже глубже, чем мой ВУЗ. Или Вы на момент начала работы не прочли хотя бы их? Плюс практика онлайн, для тренировки мозга вроде Codeforces или олимпиадных задач acm. Ещё за пол года можно забить голову всякой фигнёй ради расширения списка вакансий. Аля работа с БД, многопоточность, низкоуровневая работа с памятью, сетевые протоколы, защита данных, различия парадигм языков.
Можно конечно сказать что очное высшее техническое образование меняет склад ума, даёт полезные обобщённые навыки которые не даст самоучитель, но это отдельный разговор. Да и порой наш склад только вредит делу, ведь есть куча вещей, которые нам доверять нельзя (вроде проектирования UI)
Называть язык - это удобный метод коммуникации между теми кто в теме. Смотрите: "Разработчик мобильных приложения для IOS" - 41 символ, а Swift - 5. У языков есть разный порог вхождения и репутация, разные целевые платформы. И главное - языки сильно отличаются, парадигмами, работой с памятью, типизацией и т.д. Нет никаких базовых теорий, верных для всех видов языков. Вспомните самый популярный наглядный пример работы с данными
"1" + '2'
Насколько сильно отличается результат выражения у ООП языков с явной статической типизацией и НеООП вроде С или динамической типизацией вроде JavaScript. А это ведь по сути самый базис, разве нет?

Reply

vasiliystavenko April 22 2018, 18:04:40 UTC
> Насколько сильно отличается результат выражения у ООП языков с явной статической типизацией и НеООП вроде С или динамической типизацией вроде JavaScript. А это ведь по сути самый базис, разве нет?

Базис - это нечто общее для железа и программирования в целом. Сюда можно отнести такие понятия как:
1. конкатенация строк
2. принцип владения объектом
3. математические операции
4. ввод-вывод
5. Управление исполнением: циклы, условные операторы, рекурсия.
6. Использование ранее написанного кода
7. композиция-декомпозиция, стандартные контейнеры и алгоритмы с этими контейнерами.

Все эти вещи в том или ином виде присутствует в разных языках. Где-то есть специфичные вещи, вроде невозможности передать по значению, или move-семантика, но они являются вишенкой языка. У всех этих базовых абстракций есть свой синтаксис. Выучить его - невелика проблема, если ты знаешь что ты хочешь выучить.

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

Reply


Leave a comment

Up