Найти тему
Гипермышление

Эволюция вопроса: "Какой язык программирования выбрать?"

Задача про выбор языка проходит три стадии, прямо как любое драматическое произведение. Да, если посмотреть на этот вопрос сверху, то есть такая задача, с чего начать?

Даже если вы в школе в 80-е не успели по программировать на Бейсике, а в институте в 90-х писали на Фортране, все равно технологии семимильными шагами убежали вперед не только изменив мир вокруг нас, но и перевернув всю отрасль IT, сделав код бесплатным достоянием всех желающих. Круто, помниться аспирантом я пытался быть оригинальным и купил за 100$ Prolog (PDC), декларативный язык сломай себе мозг. Но удалось из него выжать несколько программ по оптимизации, самая крутая - это оптимизация N-мерной функции методом тяжелого шарика (градиентный спуск). Функция задавалась вручную, затем программа компилировалась и вуаля задавай стартовые условия и лови экстремумы в N-пространстве, которое трудно...невозможно себе представить.

Плоскость представить легче всего
Плоскость представить легче всего
Здесь я перестаю хвастаться своими достижениями, и перехожу к сути вопроса, а точнее к его эволюции.

До момента, начала описания этой самой трех-ходовки, хочу сказать, что программирование - это настоящий авангард: от математики до менеджмента, кузница методов мышления (UML) вам в помощь для записи того, что уже нельзя назвать идеями и что не умещается на салфетке. А потому Гипермышление ставит три задачи:
1.
Исследовать парадигмы программирования: императивное, функциональное, объектно-ориентированное, мето... куда же без него;
2.
Научиться в программировании приемам и методам: скажем так циклы, итерации, рекурсия, и т.д. и найти то, чего еще нет;
3.
Предложить свою нотацию приемов мышления (от Алеф до Тав), для записи процесса разработки на этапе работы с концепциями.

А потому, с некоторым пыльным бекграундом из Бейсика, Фортрана и Пролога пришлось задать самому себе тот же самый вопрос: "С какого языка программирования начать свое возвращение в разработку?"

Как я уже отметил, отрасль за последние 20 лет изменилась до неузнаваемости. Последнее что я помню из 90-х это Паскаль и Делфи. (Делфи - компании Борланд, могу путать, но компьютеры ЕС которые занимали комнату и к которым подключали терминалы точно забуду).

Исследование вопроса: "Какой язык программирования выбрать?" я еще рассматривал с позиции теории принятия решений, которую разрабатываю более десяти лет и преподаю в Московском Университете. Обязательно сделаю на эту тему отдельное исследование, а пока хочу поделиться своим наблюдением, которое напоминает процесс просветления:
1. Когда я только начал постижение Дзен, я думал что горы - это горы.
2. Когда я встал на путь Дзен, я понял, что горы - это не только горы.
3. Когда я достиг просветления, понял, что горы - это всего лишь горы.

А теперь три шага к просветлению в выборе языка:

Шаг 1. Тезис (действовать, действовать, действовать)
Характеризуется тем, что вам попадаются публикации: сначала
Вася Пупкин пишет про то, какой язык надо выбрать ссылаясь на рейтинг!; затем Бася Жупкин пишет про то, кто и сколько зарабатывает на том или ином языке, и в конце концов Хася Супкин пишет про выбор языка по развитым сообщества ми библиотекам. И вы все это читаете, пока Тася Лупкин не скажет, что язык надо выбирать под свои задачи, которые вы собираетесь решить!

Да здравствует утилитарный подход? или Тася - это такой один из типажей программистов. И как тут не упомянуть на этот счет гениальную статью, про программистов, где их поделили на четыре категории: "линейный", "звездный", "прагматичный" и "пассажир".

А что делать тогда мне, если я хочу выбрать язык, чтобы узнать мышление программистов и понять как можно предложить Гипермышление, и помочь в решении их архи-сложных задач. Про визуализацию и дополнение к UML я уже подумал. Про сохранение know-how в духе Фреймов и т.н. "инженерии знаний" также есть кое-какие идеи. Но критерий выбора и их многообразие не складывались ни в единое целое, ни в головоломку. Упс.

-3

Шаг 2. Антитезис (проблемы, границы, пределы)
И здесь мне попадается одна правильная статья про программирование, про языки программирования, ну это не только способ разговаривать с компьютером, объяснять "что делать" и давать ему команды, но и дескать пишут про выбор языков дилетанты, которые не понимают сути вопроса. Пересказывать статью не буду, сами можете погрузиться и почитать
ЗДЕСЬ.

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

Шаг 3. Синтез (язык не так важен, важен уровень мышления)
В общем так получается, что язык не главное, где-то я встречал метафору, что язык программирование - это лишь форма записи ваших мыслей и команд для компьютера. Главное мысли, а то как их записать ручкой (Java) или карандашом (C++), a может быть фломастером (Python), гвоздем (Rust), мелом (Go) ... уже не так важно, так как программирование это больше про мысль. Соответственно в связи с этим актуальным становится ход мысли, когда задача или проблема раскладывается на подзадачи, под-под-задачи... до элементарных операций.

И здесь еще один такой момент, что любая задача решается всего один раз! Далее она в библиотеке и ее можно вызывать и решать автоматически, не загружая голову деталями, важно становится подняться на уровень абстракций и еще выше.

Не важно с какого языка начнете, главное чтобы это было в развивающем сообществе. Перефразируя услышанное "лучше \"немодная\" технология в хорошей компании, чем наимоднейшая в плохой"
...

Собственно расширить границы и уровни наша основная задача.

-4

А любителей настоящего хардкора ждет язык вероятностного программирования Gen, который работает на Julia, и позволяет писать самообучаемые нейронные сети.