HPUNIX Сайт о ОС и не только!

Эволюция применяемых языков программирования

29 августа 2012 - unix
Эволюция используемых языков программирования

На написание этой статьи меня вдохновили заметки На чём пишете? Дениса Филонова и Эволюция применяемых языков Даркуса.

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

Внимание! В отличии от обычных заметок, публикуемых в блогах, в этой статье сильно много букв. Если вы перебежали на эту страничку из Twitter либо Гугл Reader в разгаре рабочего денька, советую добавить ее в закладки и прочесть позднее.

К примеру, дома, в тиши и покое, с чашечкой зеленоватого чая в руках.

К примеру, мне удалось вспомнить, что когда-то я программировал на таких языках, как Modula-2 и GPSS, а моим первым языком программирования был совсем не Delphi, как мне казалось. А еще я почему-либо задумывался, что начал программировать в 8-м классе.

Но сопоставив свои мемуары с фактами, я узнал, что ошибался. Свою первую программку я никак не мог написать ранее 2003-го года. Тогда мне было Четырнадцать лет и я обучался в 9-м классе.

Вот такая ненадежная штука эта людская память.

Как все начиналось (2002-ий год)

Итак, на дворе был 2002-ий год, я обучался в 9-м классе. В 2002-ом не много кто мог повытрепываться скоростным доступом в веб. В 9-м классе у меня не было даже Dialup. Ходить по выходным в гости для того, чтоб поиграть в Sega Mega Drive II либо даже Dendy, было обычным явлением.

Компы либо PlayStation были у немногих, притом иметь PlayStation было так же круто, как иметь компьютер. У моих родителей был компьютер. Индивидуальный ноутбук LG LM50-34GR появился у меня чуток позже, так что приходилось разделять компьютер с братом.

Как и полагается уважающему себя школьнику, компьютер я использовал в главном для игр.

Какие это были игры! Counter-Strike, Unreal Tournament, Gorky 17, I.G.I, Wizardry 8, Neverwinter Nights, Imperor: Battle for Dune… В CS и UT мы обычно игрались с ботами, ведь чтоб поиграть с друзьями, необходимо было выпросить у родителей средства, собраться всем совместно и пойти в компьютерный клуб.

Вы не поверите, но рефераты мы тогда тоже обычно писали без помощи других. Предки почему-либо не склонны давать детям средства для того, чтоб те сходили в интернет-кафе и скачали сочинение по литературе. Ну и самих интернет-кафе, как и веб-сайтов с сочинениями/рефератами, было незначительно.

Будучи отрезанным от глобальной сети, ну и не достаточно представляя, что же все-таки это такое, информацию о новых играх я черпал из журналов «Игромания» и «Game.exe». При этом в этих журнальчиках меня заинтересовывали не столько анонсы игровой промышленности, сколько прилагающиеся CD диски.

Сможете для себя представить, что такое целых 600 50 Мб демо-версий, патчей, модов, читов и похождений игр для 14-и летнего ребенка, не имеющего выхода в веб? Я заботливо хранил все диски в верхнем ящике стола и пристально смотрел, чтоб каждый диск был упакован в защищающий от грязищи и царапин полиэтиленовый пакетик.

Скрипты для Neverwinter Nights (2003-2004)

В 9-м классе я очень «подсел» на игру Neverwinter Nights. 3d графика, калоритные спец-эффекты, захватывающий сюжет и от 60-и до 120-и часов расчетного времени игры, зависимо от желания игрока отвлекаться на побочные квесты.

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

В один прекрасный момент я открыл «Игроманию» и отыскал в ней статью, посвященную редактору карт Neverwinter Nights. Я не поленился отыскать эту статью на веб-сайте журнальчика. Она именуется «Все о редакторе Neverwinter Nights.

Ноктюрн влюбленного зомби. Часть первая». Статья была написана Александром Таракановым и размещена в 62-м номере «Игромании» в ноябре 2002-го года.

Мне стало любопытно и я попробовал сделать свою карту.

Это оказалось нетрудно. Поначалу создается локация определенного типа и размера. К примеру, пещера размером 12×12 полей. Потом при помощи зрительного редактора в этой пещере (поточнее — горе) «прорываются» тоннели, которые заполняются чудовищами и сундуками с сокровищами.

Можно создавать несколько локаций и связывать их переходами в виде дверей, порталов и тп. Понятно, что программированием здесь и не пахнет.

В декабре такого же года была размещена 2-ая часть статьи, а в январе 2003-го — последняя, треть, которую Александр писал вместе с Антоном Лысенко. Вот эта статья и стала для меня дверью в мир программирования. В ней речь шла о скриптовом языке редактора карт.

Конкретно на нем я написал свои 1-ые программы. Программы были самые простые. К примеру, в событии OnEnter какой-либо локации прописывался код, предписывающий отыскать NPC по его идентификатору и вынудить его потянуть за напольный рычаг.

В свою очередь у этого рычага в событии OnPull был прописан скрипт, создающий в определенной точке карты голема и вызывающей в этой же точке некоторый эффект определенной длительности.

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

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

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

ActionScript (2003-2004)

ActionScript — это то, на чем программируют Flash-игры и Flash-сайты. С этим языком я познакомился благодаря серии статей «Беспредел простоты», размещенным в рубрике «Самопал» все той же «Игромании».

Серия состоит из 3-х частей, размещенных в период с декабря 2002-го по май 2003-го (часть 1-ая, часть 2-ая, часть 3-я). Из 3-х частей к программированию имеет отношение только последняя. Напоминаю, что я не очень проникся ActionScript и писал на нем всего несколько раз в собственной жизни.

Delphi Семь (2003-2006)

Кроме третьей части «Беспредела простоты», рубрика «Самопал» журнальчика «Игромания» №5(68) Две тыщи три содержала статью «Мастерская творца. Создание текстового редактора» за авторством Константин Артемьева. 2-ая часть статьи была размещена в июньском номере.

Повествование шло о языке Delphi.

Оказалось, что программирование на Delphi очень припоминает работу с редактором карт для Neverwinter Nights. Только заместо пещер и тоннелей мы имели форму и кнопки на ней. Заместо рычага и действия OnPull было поле ввода и событие OnEdit.

К огорчению, удовлетворенность открытия омрачала сложность языка. Я был плохо знаком с концепцией переменных, процедур, условных операторов и циклов, а про ООП вообщем ничего не слышал.

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

Мне казалось, что я повелеваю вселенной. Я написал собственный текстовый редактор.

После чего я основательно «подсел» на Delphi. Я купил книжку «Delphi 7. Учебный курс» Сергея Бобровского и благодаря ей разобрался с переменными, условными операторами и циклами. В скором времени у меня появился Dialup, а потом и скоростной веб от Akado.

Благодаря вебу, мне стали доступны статьи и форумы, откуда я подчерпнул много познаний о программировании. С течением времени я открыл себе WinAPI и KOL.

Я писал на Delphi приблизительно до конца первого курса, когда или из-за вируса или из-за сдохшего диска я растерял все свои исходники. Я печалился, как будто у меня погиб возлюбленный любимец.

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

В конечном итоге к Delphi я так и не возвратился. Но некий неприязни я к этому языку не испытываю. Это неплохой, пригодный ООП язык, на котором можно писать как под Windows, так и под UNIX.

Но я бы не рекомендовал на данный момент учить его в качестве основного языка. Владея C++, больше шансов отыскать увлекательную работу, если только вы не фрилансер. Довольно сопоставить число вакансий на HeadHunter для программистов на Delphi и на C++.

Кстати, в последний раз ворачиваясь к «Игромании». Судя по архиву статей на веб-сайте журнальчика, в 2006-ом году рубрику «Самопал» закрыли. Очень жалко.

Visual Basic for Applications (2003-2004)

Я был много удивлен, вспомнив, что имею опыт программирования на Basic. VBA — это диалект Basic, применяемый в Microsoft Office. Если память не изменяет, нас учили ему в 9-м классе на уроках информатики.

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

После 9-го класса я перевелся в физико-математический лицей, где, помнится, нам давали такие же задачи. После чего VBA мне никогда не пригодился.

Logo либо «Черепашка» (2003-2004)

В 10-м классе при помощи Logo нас учили структурному программированию. Представьте, что перед вами квадратная песочница, в какой ползает черепашка. Передвигаясь, черепашка оставляет за собой след.

Logo — это язык, программки на котором отрисовывают рисунки, управляя таковой виртуальной «черепашкой». Если метафора с черепашкой для вас непонятна, представьте, что вы водите кисточкой с краской по квадратному холсту, верно выполняя аннотации на языке Logo. К примеру, если в программке написано «вперед 30; вправо 90; вперед 10», то на холсте (либо в песочнице) будет нарисована буковка Г.

Эволюция используемых языков программирования

Невзирая на кажущуюся легкость, задачи на Logo могут быть достаточно нетривиальными. К примеру, задачка может ставиться в стиле «нарисовать n-угольник для случайного данного n > 2». Высшем пилотажем числилось нарисовать дерево, так как здесь требовалось применение рекурсии, которая выносила всем мозг.

Если для вас захочется поразминать мозги при помощи таких задачек, воспользуйтесь открытой программкой KTurtle. Язык программирования, применяемый в KTurtle, основан на Logo и позволяет использовать российские ключевики.

Pascal (2003-2006)

В старших классах и на первом курсе у нас был Pascal. В отличии от Logo, здесь были массивы, структуры данных, файлы и, кажется, даже какая-то графика. Программки мы писали в Turbo Pascal на стареньких компьютерах, работающих под незапятнанным DOS (Logo запускался в таких же критериях).

Обычно я делал лабораторные резвее многих одноклассников и в образовавшееся время упражнялся в написании bat-скриптов (если что, это как sh-скрипты в Unix). Во всяком случае, я не припомню, чтоб это было у нас по программке. Зато помню, как написал «bat-вирус», рекурсивно обходящий сборники и кладущий в каждый каталог свою копию.

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

Вообще-то, у этого языка есть определенные достоинства перед языком Си. Жалко, что в наше время на нем не много пишут.

Ассемблер x86 (2004-2007)

В старших классах я увлекся криптографией. Я купил для себя красноватый томик «Прикладной криптографии» Брюса Шнайера и пристально изучал его после школы.

Самым сложным для меня было осознать, как строчка либо какой-либо «file of double» могут быть зашифрованы (либо хэшированы) при помощи метода, работающего с несколькими целыми числами. К огорчению, исходники в конце «Прикладной криптографии» были на языке Си, который я не знал.

Зато у меня уже был выход в веб, где я мог отыскать исходники криптографических алгоритмов на Delphi. Как досадно бы это не звучало, в большинстве исходников использовались ассемблерные вставки, которые я не осознавал.

Тогда я уже был полон решимости стать «настоящим программистом». А какой я «настоящий программист», если не знаю ассемблер? Так у меня появилась книга «Ассемблер для Windows, 2-е издание» Владислава Пирогова. Эта книга до сего времени стоит у меня на полке:

Ассемблер для Windows, 2-е издание

Позднее выходили третье и 4-ое издание книжки, но в их было много излишних страничек, где рассказывалось больше о WinAPI, чем об ассемблере. Видимо, имела место погоня за объемом. Это один из немногих узнаваемых мне случаев, когда преждевременное издание книжки лучше следующих изданий.

Много нужных материалов, связанных с ассемблером, я отыскал на веб-сайте wasm.ru. Там же я вызнал различные достойные внимания вещи про Windows API, отладку при помощи OllyDbg и SoftIce, реверсинг при помощи (тогда еще бесплатного) hiew и IDA Pro, полиморфизм и антиотладочные приемы. В особенности мне нравились статьи от Ms-Rem (тогда он еще не «погиб в аварии»), видимо, так как кроме ассемблера он использовал Delphi.

В конечном итоге я разламывал программки (но никогда не выкладывал кряки!), создавал полиморфные движки (но никогда не делал трояны и вирусы!), писал простые драйверы под Windows и играл с упаковщиками/крипторами исполняемых файлов приблизительно до середины 3-го курса. К тому моменту я стал очень интересоваться юниксами и языком программирования Perl. Стало понятно, что ассемблер не очень неплох в плане переносимости и что некие типы программ намного удобнее писать на Perl.

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

Это в свою очередь посодействовало мне избежать огромного количества ошибок. Не считая того, познание ассемблера пару раз помогало мне при отладке программ (испытания, к огорчению, не всегда выручают). Если вы пишите на Си, C++ либо Delphi, непременно издержите время на исследование ассемблера — не пожалеете!

Необходимо отметить, что современные компиляторы ассемблера поддерживают объявление процедур, локальных переменных и макросы, в том числе макросы для операторов if и циклов while. Таким макаром, программирование на ассемблере в наше время очень припоминает программирование на Си либо Pascal.

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

В заключение к этому параграфу желаю сказать, что ассемблер оказал конкретное воздействие на выбор доменного имени для этого блога.

C/C++ (2004-2012)

В старших классах я часто почитывал журнальчик «Хакер», где было много исходников на C/C++. Также исходники на Си были в «Прикладной криптографии» и на wasm’е. Я не осознавал, что происходит в этих исходниках, но очень желал разобраться. Так я начал учить C/C++.

Кстати, я в курсе, что Си и C++ — два совсем различных языка. Но так как эти два языка я изучал параллельно, внедрение термина C/C++ кажется мне уместным.

Помню, как я обошел все ларьки с дисками в ближайших подземных переходах, пока не отыскал в одном из их диск с Borland C++ Builder X. Не помню, или тогда я все еще посиживал на Dialup, или еще не подозревал, что можно закачивать из сети ISO образы размером 600 50 Мб. Установив дома программку, я не отыскал в ней формочек и кнопочек, как было в Delphi.

Как я был разочарован! Я возвратился к торговцу и поинтересовался, нет ли у него других компиляторов C++.

Не помню, поменял ли торговец диск либо я дождался подключения скоростного веба, но скоро у меня был установлен Microsoft Visual C++ 6.0. Или я не отыскал в нем редактор ресурсов, или отыскал, но он мне не приглянулся, или память опять меня подводит и в Visual C++ 6.0 никакого RAD отродясь не было, но все программки в нем, включая GUI, я писал на чистом WinAPI.

1-ое время я изучал C/C++, смотря на примеры кода и пытаясь без ошибок перепечатать их. Потом от примеров я перебежал к способу проб и ошибок. Скоро я стал хорошо писать на «Си с маленькими улучшениями от C++». Году в 2008-ом (на 3-м курсе) я заполучил книги «Полный справочник по Си» и «Полный справочник по C++» Герберта Шилдта:

Полный справочник по C++

Так началось мое знакомство с реальным C++. 1-ое время было очень трудно осознать объекты, шаблоны и исключения. Осознание пришло как-то само (возможно, во время поездок в метро), когда я прикинул, в какой ассемблерный код могли бы преобразовываться объявления классов и шаблонов.

Языки Си и C++ очень понадобились мне в институте. Смею заверить, что знать программку наперед — очень комфортно. Также познание Си и вещей в стиле «что выведет код int *ptr = (int*)1024; printf("%d\n", ++ptr);» посодействовало мне устроиться на мою текущую работу, которая мне очень нравится.

Все же, на сях я пишу достаточно изредка и в большей степени себе. Не могу сказать, что очень этим расстроен. Ведь на работе и безо всяких утечек памяти и ошибок переполнения буфера хлопот хватает.

Да и вполне забывать C/C++ в мои планы не заходит, так как эти языки неподменны в ряде задач. Не считая того, на сях можно писать модули для Perl и Haskell.

PHP (2004-2007, 2010)

Не помню точно, откуда у меня появился энтузиазм к веб-программированию, но помню, что PHP я начал учить в старших классах. Сейчас я обучался не способом проб и ошибок, а по книге «Самоучитель PHP 5» Дениса Колисниченко.

К тому времени я уже мало знал Си, по этому в PHP мне удалось разобраться практически за два вечера. Так мне казалось, но по сути я все еще понятия не имел об ООП и тем паче разных фреймворках (кажется, в мире PHP их и тогда не было).

Тогда ко мне пришло осознание, что большая часть языков программирования не достаточно чем друг от друга отличаются. Возьмем Си, Pascal и PHP. Мысль всюду одна и та же — переменные, условные операторы, циклы, функции. Все различия заключаются в маленьких деталях.

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

Язык PHP незначительно понадобился мне на моей предшествующей работе, где я воплотил на нем маленький проектик. Также познание PHP значительно упростило мне исследование Perl (если вы не знали, PHP испытал сильное воздействие со стороны Perl).

Последней относительно «серьезным» моим приложением на PHP был плагин Two Columns Archive для WordPress, написанный в 2010-м году. В текущее время я практически не пишу на PHP, если не считать маленьких правок шаблонов к WordPress и тп.

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

Хреначишь для себя сайтики в Zend Framework — ни для тебя заморочек с многопоточностью, ни утечек памяти с переполнениями буфера. Стоит также держать в голове о том, что благодаря PHP были сделаны такие пользующиеся популярностью движки, как WordPress, PhpBB, MediaWiki и другие.

SQL (2004-2012)

Во время исследования PHP я достаточно стремительно и безо всяких учебников освоил SQL. Прочел пару статеек, полистал документацию и разобрался. Только через пару лет, в институте, я вызнал про нормализацию, реляционную алгебру, транзакции, ссылочную целостность и тп.

Не представляю, как ранее я мог работать с базами данных. Стоит гласить, что мне приходится достаточно нередко иметь дело с SQL?

JavaScript (2004-2007, 2010-2011)

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

Вообщем, я старался избегать использования JavaScript, так как желал, чтоб мои сайтики отлично работали даже у юзеров с отключенным JS. Вобщем, после понимания мощи Ajax и jQuery, я стал относится к JS с наименьшим пренебрежением.

Эволюция используемых языков программирования

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

Если кому-то нравится работать с JavaScript — отлично. Я же предпочитаю специализироваться на других языках.

Bash, Csh (2007-2008)

На 3-м курсе нас учили писать скрипты на Bash и Csh (произносится «си шелл»). В то же время я устроился на свою первую работу сисадмином. Там я написал несколько легких bash-скриптов, выполняющих за меня разные рутинные деяния.

Скоро я стал использовать для таких задач Perl, вследствие чего Bash стал мне не нужен. Все же, мне было очень любопытно поработать со скриптовыми языками, применяемыми до возникновения Perl.

Кстати, я совсем не считаю Bash и Csh устаревшими средствами либо вроде того. Программерам, естественно, удобнее писать на Perl либо Python.

Но совершенно не факт, что админам либо продвинутым юниксоидам охото растрачивать время на исследование этих языков, когда есть обычный, как 5 копеек, Bash. Ну и программерам не помешает ознакомиться с Bash хотя бы для того, чтоб уметь читать код на нем.

GPSS (2007-2008)

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

К примеру, можно выяснить среднюю длину определенной очереди. По правде говоря, я не очень проникся GPSS и часто пробивал лекции по этому языку. Хотя мысль, безусловно, увлекательная и ценная.

За пределами института GPSS мне не понадобился.

Modula-2 (2007-2008)

Сразу с GPSS нас учили языку Modula-2. Это язык модульного программирования, разработанный Виртом. Помню, меня в этом языке бесила необходимость писать все ключевики в верхнем регистре, также мощная типизация.

После Си с его неявным преобразованием типов мощная типизация казалось очень неловкой. Понятно, что на Modula-2 я писал исключительно в течение того 1-го семестра.

Все же, мне приглянулись идеи, заложенные в Modula-2. Я даже серьезно подумываю как-нибудь испытать его наследника, язык Modula-3. В отличии от Modula-2, в нем появились ООП, обработка исключений, сборка мусора и другие полезные средства.

Вообщем, Modula-3 по сегодняшним меркам смотрится очень внушительно.

Байткод для Intel Восемь тыщ восемьдесят (2008-2009)

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

Байткоды

Дополнение: Мне здесь в комментах дали подсказку, что данный набор инструкций соответствует процессору Intel 8080. Увлекательную статью о нем можно прочесть тут.

По сути мы писали быстрее не на ассемблере, а на чистом байткоде. И на этом байткоде я ухитрялся писать достаточно сложные вещи. К примеру, я написал программку, которая позволяла вводить через терминал матрицу и множить эту матрицу на вводимый следом вектор.

Писать было нелегко, беря во внимание, что «коробочки» время от времени ломались (что становилось ясно не сходу, так как подозрения сначала падали на ошибку при вводе байткода) и педагогам приходилось перепаивать их прямо на упражнениях. Но было забавно!

Perl (2007-2012)

Уже не помню точно, что подтолкнуло меня к исследованию Perl. Наверняка, тот факт, что «Perl — это как PHP, но не только лишь для сайтов». Perl я изучал в большей степени по примерам кода.

Я купил книжку «Программирование на Perl» (camel book), но оказалось, что это быстрее справочник для опытнейших Perl-программистов, чем учебник. Для исследования Perl есть пара книг лучше:

Книги "Изучаем Perl" и "Perl - изучаем глубже"

К огорчению, «книга с ламой» и «книга с альпакой» появились у меня, когда я уже хорошо писал на Perl. Так что при помощи этих книжек я только заполнил пробелы в познаниях.

Язык Perl «зацепил» меня, когда выяснилось, что писать на нем намного резвее и проще, чем на Си. Программки выходили раза в два короче, а означает ошибиться при их написании было труднее.

Не считая того, Perl-скрипты были намного переносимее меж разными ОС, также их не надо было компилировать, что оказалось очень комфортно и сберегало время. Позднее мне также открылась мощь постоянных выражений, фреймворка Mojolicious и бессчетного количества модулей на CPAN, также техно грамотность и дружелюбие общества Perl-программистов.

Я много пишу на Perl. Я использую его на работе, в собственных проектиках, ну и просто в ежедневной жизни. Программка, сделанная мною в рамках дипломного проекта, также была написана на Perl.

Естественно, у этого языка есть и слабенькие стороны, но к ним относятся совсем не «устарелость» либо «плохой синтаксис» языка, как говорят некие «специалисты». Это превосходный современный (и развивающийся!) язык. Рекомендую.

Haskell (2008, 2011-2012)

В институте у нас было два предмета на выбор — логическое программирование (на Prolog) и функциональное (на Haskell). Логическое программирование, разумеется, имело отношение к искусственному уму, лекции по которому я мягко говоря недолюбливал, а функциональное вызывало ассоциации с отлично знакомыми сишными функциями.

Угадайте, какой из предметов избрал ваш преданный слуга. Я не поленился покопаться в архиве собственной электрической почты для того, чтоб точно найти, когда состоялось мое 1-ое знакомство с Haskell. Это было на 4-м курсе (2008-ой год), а предмет вел Дмитрий Демидов.

Если честно, в институте я не очень проникся многофункциональным программированием. Было совсем неясно, кому и для чего оно необходимо. Зато спустя несколько лет на меня снизошло озарение, после которого я проникся языком Haskell по полной программке.

Очевидно, язык я совсем не помнил, так что пришлось учить его поновой. В этом мне очень посодействовал веб-сайт learnyouahaskell.com, также книжки Романа Душкина:

Книги Романа Душкина, посвященные Haskell

На момент написания этих строк я все еще нахожусь в процессе исследования Haskell. Мне следует лучше разобраться в библиотеках и инструментах для этого языка, ну и вообщем «набить руку». Не считая того, я не уверен, что верно понимаю концепцию монад.

Использовать Haskell на работе мне пока не приходилось.

Уроки на java в среде Eclips

Python и Java (~2010-2011)

Следуя веяниям моды, я ознакомился с Python и Java. На мой взор, из литературы здесь можно порекомендовать «Python — подробный справочник» Дэвида Бизли и «Философию Java» Брюса Эккеля. Правда, в российском переводе «Философия Java» урезана вдвое по сопоставлению с оригиналом.

Все же, книжка достойная.

Книги "Философия Java" и "Python - подробный справочник"

С языком Java я познакомился достаточно поверхностно. По всей видимости, язык пригодный. Во всяком случае, мне понятно, почему он был сотворен и каковы его достоинства перед C++.

Но есть и недочеты. В 2-ух словах, C++ — более непростой язык, но он и поболее универсальный.

К Python я пригляделся чуток более внимательно… и был очень разочарован. Не много того, что этот язык далековато не так «элегантен и прост в изучении», как утверждают те же «специалисты», так у него имеется и огромное количество существенных заморочек, которых нет в Perl. Взять хотя бы производительность и «особенности» собирателя мусора, две совсем несопоставимые версии языка, бедность PyPI по сопоставлению с CPAN, также делему с многопоточностью и GIL.

Уверен, как Python, так и Java отлично управляются с большенными классами задач. И поверьте, у меня нет никакого желания оскорбить программистов, использующих эти языки.

Но для решения тех же задач я могу удачно применить Perl и C++ (с точностью до того, что на C++ не пишут апплеты, а на Perl — плагины для Django). Особенной же выгоды от перехода с C++ на Java либо дополнительного познания Python кроме Perl я что-то не вижу.

Кстати, по этой же причине я не пользуюсь Linux. Пока меня стопроцентно устраивает FreeBSD.

Итак. Я вроде умею читать код на Python и Java, а при сильном желании, может быть, даже писать. Может быть, когда-нибудь один из этих языков понадобится мне по работе (хм… ревью кода?).

А пока я никак не использую Java и, кажется, завязал экспериментировать с Python.

Диаграмма применяемых мною языков

Представленная ниже диаграмма изображает, в какие годы и на каких языках программирования я писал. Мысль украдена у Даркуса.

Диаграмма используемых языков программирования

Необходимо подчеркнуть, что это очень примерная диаграмма. К примеру, я совсем на писал на Java в течение 2-ух лет. Но кое-где в период с 2010-го по 2011-ый год я интересовался этим языком и писал на нем какие-то хэллоуворлды.

Что далее?

Я практически уверен, что не стану учить Ruby либо C#. Подозреваю, что в скором времени я попробую разобраться в Lisp (либо, может быть, Clojure) и Prolog. Очень любопытно смотрится Perl 6 (можно сказать, что это Perl 5, в каком были исправлены многие недочеты).

Может быть, хотя и маловероятно, что я попробую Scala. Кажутся увлекательными языки Fortran, OCaml, Modula-3 и Erlang, но не так увлекательными, чтоб растрачивать на их время.

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

Похожие статьи

Теги: ос
Рейтинг: +7 Голосов: 225 4703 просмотра
Комментарии (0)

Нет комментариев. Ваш будет первым!

Найти на сайте: параметры поиска

Windows 7

Среда Windows 7 на первых порах кажется весьма непривычной для многих.

Windows 8

Если резюмировать все выступления Microsoft на конференции Build 2013.

Windows XP

Если Windows не может корректно завершить работу, в большинстве случаев это

Windows Vista

Если к вашему компьютеру подключено сразу несколько мониторов, и вы регулярно...