Периодически меня спрашивают, на каких языках программирования я писал.
Чтобы каждый раз не повторять длинный список, я решил завести эту запись. Кроме того, добавил свои ощущения и "видения".
Алгол-60
Его нам давали в школе в 1977-78 годах, а свои программы мы прогоняли на "Минске-22".
В-принципе, достаточно простой процедурный язык, ориентированный только на вычисления. Те, кто изучил только его, до сих пор уверены, что программирование на всех языках однотипно и примитивно.
Уже в вузе нам обещали дать Алгол-68, но так и не сумели запустить компилятор на ЕС-1045.
FORTRAN IV
Тоже давали в школе в конце 10 класса, но чисто теоретически. Практическое применение ему нашлось только в вузе (ЛЭТИ), когда на Искре-1256 (Тренажер) рассчитывали курсовые работы.
В-принципе, отличался (отличается) от Алгола только форматированной печатью и наличием математических библиотек.
FORTRAN 77
Попытка немного "сгладить" корявый FORTRAN IV и приблизить его к стилю Алгола/Pascal.
Я программировал на нем в НИИ ТМ (1985-1988 года) перевод описаний схем/разводки плат с одного языка описаний на другой. Рутинная работа.
PL/1
Изучали в вузе, потом помогал писать на нем программистам из соседнего отдела в НИИ ТМ. Правда, чаще помогал им в составлении алгоритмов и математических моделей.
Опять же, процедурный язык для расчетов, который ничем особенным меня не впечатлил.
Ассемблер
Ну как же "настоящим программистам" без него (хотя специальность была - "прикладная математика"). Давали в вузе один семестр, но практического применения в моей жизни так и не было.
Как "теория" может быть полезен, чтобы понимать, во что превращается программа после компиляции.
BASIC
Basic был установлен на БК-0010Ш (комплекс КУВТ-86), на которых я преподавал детям информатику в школе (1988-1993 года).
Но это был не простой Basic, в нем были функции графики и оператор интерактивной обработки нажатия клавиши (inkey$)!
Почти сразу я понял, что программирование детям на первом уровне надо давать через графику.
Не просто циклы расчета чего-то там, а рисование заборов, разлиновка квадратов в клетку, движение фигур по разным траекториям и так далее.
Функции обработки строк тоже нашли свое достойное место в обучении. Тогда мне даже казалось, что лучшего уже не будет.
Но к 1993 году БК-0010Ш уже сильно устарели и у нас появились Macintosh-ы.
Pascal
На Macintosh он был тоже с графикой, поэтому, в-принципе, особой разницы с Basic не было.
C++
1996 год, новые и современные Macintosh-ы, включая PowerPC, и Symantec C++ в придачу.
Все лето я его изучал и сильно влюбился. Это не язык программирования, это язык создания/описания своего мира.
Все встроенные типы существуют только для того, чтобы ты создал свои, определил для них собственное поведение при выполнении стандартных операций, собственные функции и прочее.
Например, нравятся тебе кошки и собаки одновременно, - созданный тобой "котопёс" будет радовать тебя. Те, кто скажет, что это - урод, посмотрите на льва. Хотя львы и относятся к кошкам, но живут в стаях (прайдах), как собаки.
При этом есть возможность самому управлять "жизнью" объектов (памятью), есть шаблоны (templates), во-время "подтянулись" библиотеки stl и boost...
Правда, в стандартном C++ нет графики. Но в Symantec C++ она была (как и звук), но в виде функций.
Позже
портировал программы для МасOS, а потом много программировал под MS Windows в Visual Studio.
Хочу подчеркнуть, что переход от процедурного программирования (мышления) к объектно-ориентированному для некоторых является сложной, а иногда и непреодолимой задачей.
Java 2
Пока оформляли мне разрешение на работу в
Финляндию, устроился (в 2000 году) в компанию СофтДев на проект, в котором нужно было реализовать возможность играть через интернет в Go-Chess
(симбиоз go и chess по придуманным одним американцем правилам). Технологию надо было выбрать самостоятельно. После небольшого анализа/эксперимента я для клиента выбрал Java.
Первые недели две плевался, скрипел зубами, ворчал, но потом привык. Особенно понравилась работа с графикой. Очень изящно и объектно-ориентированно (другого подхода в Java нет).
Недаром потом Microsoft "позаимствовал" подход в своей библиотеке GDI+.
В-общем, язык Java тоже не плох, но я всё равно остался фанатом C++. И вернулся на него вплоть до 2007 года.
PHP
C 2007 года по 2017 я не программировал, а руководил проектами. Но так получилось что в 2017 остался ненадолго без работы и стал изучать PHP, на который "поглядывал" еще в году так в 2002.
В итоге, меня взяли простым PHP-программистом в Эмзиор на разработку АТС по заказу Воентелекома. Сразу почувствовались три вещи:
1) Язык разработан программистами C++, поэтому видны "родные души".
2) Слабая типизация меня раздражает до сих пор. Получает функция аргумент, а что он такое - хрен знает. Иногда и IDE не сильно спасает, особенно когда нет комментариев.
3) После некоторого момента ощущаешь, что это это все-таки скриптовый язык, и объектно-ориентированный подход в нем не всегда оправдан.
Обращаю внимание, что PHP - серверный язык. Если хотите что-то по-быстрому "сваять", чтобы хвастаться перед однокурсницами, - выберете другой язык.
Java script
В вакансиях на программистов PHP, обычно, идет в связке с Java script (JS). Для разработки клиента (и дизайна) в компании Эмзиор был специально выделенный сотрудник,
поэтому глубоко вникать в JS у меня надобности не было.
Так, по-мелочи. Но что-либо писать на JS не хочу. Никогда.
Python
Настал момент, когда надо было лучше понять, что же такое "Искусственный Интеллект/Artificial Inelligance(AI)".
Больше всего мне понравился курс
"Elements of AI" и тут выяснилось, что AI идет "в связке" c Python.
Язык немного специфичный, но самое главное, - это большая библиотека для различных вычислений. Именно её изучение является не простым делом.
Если с математикой, включая высшую, не очень хорошо, то смысла изучать этот язык и писать на нем нет. А также учтите, что python скриптовый.
Мне удалось сконцентрироваться и напрячь остатки извилин, чтобы получить два сертификата:
Elements of AIBuilding AIЗаключение
В современном программировании важно не только знать синтаксис языка и уметь правильно его применять, но важнее знать библиотеки/frameworks. Например:
1) MFC, ATL для программирования на C++ под Windows.
2) Qt для программирования на C++ программ, совместимых с разными ОС.
3) Zend, Laravel, Yii для программирования на PHP
А также надо учится не программировать на языке, а мыслить на нем.
Кроме того, если решите встать на путь IT-шника, то готовьтесь учиться всю свою трудовую жизнь.
Компьютеры/системы, на которых приходилось программировать, смотри здесь:
Мой компьютерный опытПодробнее https://fedjanew.livejournal.com/29612.html?m...