Примеры кода на 39 эзотерических языках программирования

C++

C ++ – это язык программирования, разработанный в AT&T Bell Laboratories Бьерном Страуструпом в начале 1980-х гг. Язык был разработан с целью объединения эффективности и лаконичности C с возможностями объектно-ориентированного программирования SIMULA-67. Со времени его создания язык быстро развивался, и с момента его первоначального выпуска в 1985 году было добавлено несколько новых функций. С тех пор был создан официальный комитет ANSI-C ++ (X3J16), чтобы помочь разработать точный и надежный стандарт для языка, который должен устранить большинство, если не все, неоднозначности в современных компиляторах и переводчиках C ++.


За некоторыми скромными исключениями, C ++ можно считать надмножеством языка программирования C

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

Swift

Swift был представлен в 2014 году на всемирной конференции разработчиков Apple. Разработка Swift была начата в 2010 году Крисом Латтнером с другими программистами, такими как Даг Грегор, Джон Макколл, Тед Кременек и Джо Грофф из Apple. Основная идея Swift была взята из Objective-C, Rust, Haskell, Ruby, Python, C #, CLU и многих других языков программирования.

Первая версия Swift была 1.0, которая претерпела серьезное обновление до Swift 2 на WWDC 2015. Его обновленная версия 2.2 была сделана с открытым исходным кодом под лицензией Apache License 2.0 3 декабря 2015 года для платформ Apple и Linux.

Javascript

Брендан Айх, программист Netscape Communications Corporation, создал JavaScript в сентябре 1995 года. Айху потребовалось всего 10 дней, чтобы разработать язык сценариев, тогда известный как Mocha (ударение на второй слог). Эйч создал его для Netscape Navigator, и он быстро стал известен как LiveScript. Потом команда изменила имя на JavaScript, чтобы отразить поддержку Netscape Java в своем браузере. Хотя это звучит запутанно, в то время это была «маркетинговая тактика», чтобы подключить новый язык (JavaScript) к популярному в то время языку (Java), хотя ничего общего у них нет.

Начните с HTML и CSS

Часто их называют языками программирования, но это не верно. Это язык разметки и таблица стилей, с помощью которых верстается страница. Все сайты используют HTML и CSS. Прелесть технологий — в их простоте: их легко освоить на среднем уровне за 2-3 недели. Если вам интересно работать в интернете — попробуйте.

JavaScript

Один из самых популярных языков для работы с сайтами. До сих пор использование этой технологии — едва ли не единственный способ сделать страницу интерактивной, заставить сайт реагировать на действия пользователя. Изначально JS создавали специально для веб-разработки, но сейчас с его помощью можно делать очень многое:

  • серверные и консольные приложения;
  • игры и сервисы для мобильных;
  • программы для десктопа.

Этот язык быстро развивается, востребован на фрилансе. Часто именно JS рекомендуют в ответ на вопрос, какой язык программирования выбрать для быстрого старта. Его легко освоить.

Начинающий разработчик на JavaScript может рассчитывать на 30 тысяч рублей в месяц. Средний — 45–90 тысяч и больше. C опытом от трех лет — на 135 тысяч и больше.

Особенности:

  • Неявная типизация. Когда разработчик пишет код, он использует переменные — строки, числа и прочее. В языках со строгой типизацией программисту приходится объявлять тип переменных — сообщать обработчику, что это, например, число или строка. В языках с неявной типизацией обработчик «понимает» это сам. С одной стороны, это плюс — код пишется быстрее. С другой стороны — минус, потому что новички часто ошибаются и создают операции для переменных с разными типами данных. Например, в коде порой встречается суммирование чисел и слов. Это довольно формальное объяснение, на самом деле всё сложнее. Подробнее вы поймете эти особенности после старта обучения.
  • Малонадёжность — JS не используют в сверхсложном ПО, разрабатывать банковские или промышленные продукты на нем не получится.

Стек:

  • редактор кода или IDE (среда разработки): Notepad++, Sublime Text, WebStorm;
  • отладчик: браузер, Firebug;
  • среда исполнения для серверного ПО: NodeJS + менеджер пакетов npm.

Разрабатывать удобно в редакторе кода — он подсвечивает синтаксис и подсказывает нужное написание. Отладка, или пошаговое исполнение программы, в JS происходит в DevTools браузера, дополнительное ПО необязательно.

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

Не торопитесь вникнуть во все технологии сразу. Начинаете с нуля — используйте чистый язык и разбирайтесь в принципах программирования.

Дополнительно пригодится:

  • для десктопных программ: Electron и AppJS;
  • популярные фреймворки и библиотеки: jQuery, AngularJS, ReactJS, Ember;
  • JSON — популярный формат передачи структурированных данных;
  • MongoDB — документо-ориентированная база данных для JS-процедур.

Курс «Профессия frontend-разработчик»

С нуля до разработчика с зарплатой от 60 000 рублей за 6 месяцев. Научитесь верстать сайты и создавать интерфейсы, соберите два проекта в портфолио и получите современную профессию.

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

Что такое типизация

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

Типизация — это разделение переменных на разные типы: например int (целое число), flow (число с десятичной частью), string (строка текста), bool (правда/неправда).

Типизация бывает явная или неявная, слабая или сильная и статическая или динамическая.

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

В языках со статической типизацией типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа (явно).

Динамическая типизация означает, что типы определятся уже во время выполнения программы.

Сильная (строгая) типизация не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.

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

Следите за лидерами рейтингов

Популярные языки – те, что на слуху. Даже люди, далёкие от программирования, наверняка слышали о Java, C++ и Python. Топовые ЯП периодически меняются местами в двадцатке, но состав их стабилен и отражает реальную картину. Выбрать себе язык из этого списка — неплохая идея.


Рейтинги составляют на основе поисковых запросов. И тут стоит учитывать погрешности. TIOBE отслеживает, как часто пользователи искали название ЯП. Но ведь вбивая слово «python», юзеры могут подразумевать не только язык, но и змею.

Индекс PYPL более показательный. Чтобы попасть в зачёт, запрос должен содержать помимо имени ЯП слова «tutorial», «documentation» и т. п. Но и здесь есть минусы: программисты с хорошим знанием языка редко гуглят документацию.

Точно не стоит браться за технологии, которые умирают. Visual Basic, Delphi, Паскаль — это уже история, карьеру на них не построишь. Даже если пока ещё довольно легко можно найти работу со знанием Objective-C, скоро Swift вытеснит его. Поэтому если хотите создавать современные приложения, выбирайте современный ЯП.

Недавний пример: в прошлом году к нам в школу пришёл программист, который овладел ActionScript и писал на нём флэш-игры. Но эта индустрия окончательно затухла и специалист был вынужден переучиваться на Java.

2018: Самые популярные языки программирования — Tiobe

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

Обозреватели ZDNet обращают внимание на пятое место языка Visual Basic .Net, который Microsoft выпустила в 2001 году. Его рейтинг оказался самым большим за время ведения подсчетов Tiobe — 7,127%

В конце 2017 года Visual Basic .Net находился на седьмой строчке списка с результатом в 2,467%.

ZDNet пишет, что Visual Basic .Net продолжает возрождаться, несмотря на то, что в 2017 году Microsoft объявила о прекращении совместного развития Visual Basic и C#, чтобы сосредоточиться на «ключевых сценариях и доменах», в которых Visual Basic .Net наиболее популярен. В результате компания бросила больше ресурсов за пределы C#.

Аналитики Tiobe назвали пятое место Visual Basic .Net в рейтинге «очень удивительным». Этот проект уступает лишь C++, Python, C и Java. Список наиболее востребованных языков программирования к декабрю 2018 года представлен ниже.

Рейтинг популярности языков программирование, данные Tiobe

По мнению экспертов, Visual Basic .Net «рано или поздно зачахнет», однако к концу 2018 года он остается популярным для создания специализированных офисных приложений для малого и среднего бизнеса. Этот язык все еще широко используется разработчиками во многому потому, что его легко освоить.

По данным Microsoft, у Visual Basic .Net насчитывается «сотни тысяч» сторонников против «миллионов» у C#. Компания стремится к лидерству C# в области создания технологий для облачных, мобильных и передовых вычислений, а в Visual Basic .Net видит акцент на разработку для Windows-компьютеров.Новая стратегия Microsoft вызвала тревогу у работающих с Visual Basic .Net программистов, которые опасались, что компания может свернуть этот язык. Также разработчики были разочарованы тем, что Microsoft предложила поддержку Xamarin в C#, но не сделала это в отношении Visual Basic .Net.

Как работают программы

Любая программа работает с данными: она их получает, обрабатывает, а потом возвращает результат обработки. Данные могут быть переданы пользователем, считаны из файла или записаны в самом коде.

Например, браузер получает текст из адресной строки, который ввёл пользователь, отправляет адрес на сервер, а потом выводит ответ в виде страницы.

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

Вот пример логики такой подпрограммы:

Можно вернуть данные пользователю, записать их в файл или передать другой подпрограмме. Вот ещё один пример использования программы:

Эта команда запускает программу в ОС Linux, которая конвертирует изображение img.jpg в другой формат, а потом сохраняет в файл img.png.

Получайте удовольствие

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

В итоге занял лишь 51-ое место и не получил даже футболки. Однако наспех полученных навыков хватило, чтобы заслать стратегию и посоревноваться. Кстати, всего там было 200 игроков, так что моё выступление не было полным провалом.

Выводы я сделал: Python мне не по душе, а не оказаться в числе замыкающих мне помог опыт в программировании на других языках. Это было, как минимум, весело!

Так что не стоит зацикливаться на одном языке. Попробуйте другие и поймёте, какой «в руку ляжет».

Поверьте: писать на том, что нравится, гораздо приятнее, да и получается лучше. За этим подтянется и финансовое благополучие. Если, возвращаясь домой из офиса, вы пишете программы «для себя», значит, профессию выбрали правильно.

Выберите отрасль для прокачки


Существуют три основных направления для программистов: фронтенд, бэкенд и мобильная разработка.

С фронтендом выбор очевиден. Здесь «рулит» JavaScript. Для этого языка создано множество мощных фреймворков. Также для разработки интерфейсов обязательно понадобится знание HTML и CSS. В бэкенде по-прежнему актуален C++, хоть некоторые и торопятся списать его со счетов. Также в топе здесь Java и C#

Обратите внимание и на перспективные Kotlin, Golang и Python. В области мобильной разработки всё зависит от платформы. Если IOS, то Swift, а если Android, то, в основном, Java

Развиваются и новые направления по созданию приложений с применением веб-технологий: HTML и JavaScript + CSS. Наконец, если планируете работать с базами данных, то обязательно нужно изучать SQL.

Изучайте предложения на рынке

Лучший способ понять, знание каких ЯП сегодня приветствуется, — посмотреть сайты вакансий. Там же можно узнать и «вилку» предполагаемой зарплаты. HH даже ведёт блог на эту тему, ежегодно публикуя статистику.

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

Владение редкими ЯП, например Clojure, Erlang, Scala, зачастую оплачивается выше, но и работу с ними найти сложнее. Поэтому советую осваивать их как дополнительный скилл. К тому же при изучении популярного языка можно обратиться за помощью и разъяснениями к сообществу. С новыми ЯП эта функция работает хуже.

«Любимчик» российского рынка и лидер по числу вакансий по-прежнему 1С. Оклад у junior-разработчика с ним, возможно, будет выше, чем с теми же Java и С#, но при этом потолок — ниже. Так что не гонитесь за цифрами c самого начала. Думайте о перспективах и росте.

Посмотрите, какие специалисты требуются в компании, где вы хотели бы работать. Если это enterprise-разработка и банковский сектор, то в топе наверняка будет Java. Гиганты вроде Mail.Ru Group, «Лаборатория Касперского» и «Яндекс» предпочитают C++.

Планируете заниматься НИОКР и нейросетями, ваш язык — Python, мечтаете попасть в Microsoft — С#.

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

Сфера применения JavaScript

Возможно, что по мере знакомства с программированием сфера ваших интересов изменится: вместо frontend вы сфокусируетесь на backend или захотите углубиться в мобильную разработку. JavaScript не ограничивается лишь интерактивностью сайтов и клиентской стороной.

Фреймовики и библиотеки JavaScript позволяют создавать десктопные приложения (Electron), мобильные приложения (React Native), игры (Phaser), а также работать с визуализацией данных (D3.js), базами данных (mongoDB), анимацией (Three.js).

JavaScript — один из самых популярных и быстроразвивающихся языков.

Ваш первый язык программирования не обязательно будет основным, мало кто ограничивается одной технологией. Но если вы планируете сделать JavaScript профильным языком, то международное JS-сообщество вам в помощь. Согласно исследованию GitHub, крупнейшего веб-сервиса для хостинга IT-проектов, в 2017 году JavaScript был на первом месте среди 15 наиболее популярных языков.

JavaScript пять лет подряд является самым популярным языком на одном из крупнейших ресурсов для программистов — StackOverflow.

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

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

Борис Горячев

backend-разработчик Meduza


Плюсы и минусы наиболее популярных языков программирования

Шаг 1: Вырываем с корнем скобочки из Lisp с помощью индентации Python

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

Поэтому первым делом в своем чудесном языке я решил избавится от скобочек. Лучшим решением стала имеющая значение индентация, прямо как в Python. Возьмем, к примеру, такой кусок кода на lisp:

Конечно, это выражение можно разнести по разным строкам, но от забористости из засоряющих глаз скобочек это нас не избавляет.

А теперь посмотрим, как элегантно и воздушно можно написать это же выражение на Sova с помощью имеющей значение индентации:

То есть в Sova выражение равнозначно выражению:

Haskell

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

Язык был назван в честь Хаскелла Брукса Карри, работа которого в области математической логики стала фундаментом для развития функциональных языков.

Разработка Haskell была инициирована комитетом на конференции по языкам функционального программирования и компьютерной архитектуре (FPCA ’87), которая состоялась в Портленде. Участники этой конференции согласились с тем, что должен быть введен общий стандарт для чисто функциональных языков.

Создайте хорошую основу

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

Сегодня в университетах насильно дают студентам определённый язык. К сожалению, иногда программисты так на нём и останавливаются.

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

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

Гармоничное развитие получится, если выбрать одно направление и один язык. А после достижения достойного уровня можно подтянуть и дополнительные ЯП.

Машинные языки (Самый низкий уровень)

Процессор

Внутренний мир процессора

Плюсы:

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

Минусы:

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

Язык ассемблера (низкий уровень)

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

Плюсы:

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

Минусы:

  • Ассемблер относится к низкоуровневым языкам программирования. Создание даже небольших участков кода затруднено. К тому же также необходимо учитывать специфику работы аппаратуры.
  • Платформозависимость.

первому/второму поколению

Технологии, которые потеряли былую привлекательность

Adobe Photoshop и Illustrator. Это — два замечательных приложения, которые многие годы удовлетворяли все мои потребности в работе с графикой. Я с грустью говорю им «прощайте» и благодарю их за то, что они были со мной. Теперь всё, что мне нужно, дают их бесплатные опенсорсные заменители.

jQuery. Эта библиотека стала ненужной тогда, когда закончились войны кросс-браузерной совместимости. Единственной ценнейшей для меня возможностью jQuery был синтаксис селекторов. Он оказался настолько востребованным, что в 2009 году был добавлен в DOM в виде .

AJAX. Этот прародитель Web 2.0. теперь превратился в пережиток прошлого. API заменяется современным и более простым API , а JSON приходит на замену XML.

SASS/SCSS. Я признаю то, что написание CSS-кода без переменных было неэффективным, в результате SASS многим пришёлся по душе

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

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

БЭМ. Схема именования сущностей БЭМ (Блок, Элемент, Модификатор), используемая при формировании имён CSS-классов, решает проблему глобального пространства имён. Но за это приходится платить использованием очень длинных конструкций. Я перешёл к родительским/дочерним селекторам в семантических элементах, предпочтя более лёгкий подход идентификаторам и именам классов. Например:

Шрифты Georgia и Verdana. Эти два шрифта многие годы занимали верхнюю позицию моего рейтинга шрифтов. Я мог положиться на их доступность и на их читабельность. Но после того, как появилось правило , и после того, как начали распространяться опенсорсные шрифты, я стал пользоваться подобными шрифтами.

Babel, Grunt, Gulp, Browserify, WebPack. Первые четыре пункта в этом списке вряд ли кого удивят. Но почему мой стек веб-технологий покинул Webpack? У того, что этот бандлер потерял для меня актуальность, есть некоторые причины, на которых я остановлюсь подробнее:До появления HTTP/2 с поддержкой постоянных соединений и мультиплексирования потоков мы находились в зависимости от возможностей этих инструментов по сборке бандлов ресурсов приложений. Но бандлинг ничего нам не даёт в мире, где есть HTTP/2. Стандарт ECMAScript 2015 был новым словом в JavaScript-разработке, все бросились использовать новые возможности языка в тот самый момент, когда они увидели свет. Однако тут была одна проблема. Код, написанный с использованием новых возможностей, не поддерживался браузерами. Поэтому его приходилось транспилировать в ECMAScript 5-код. В этом деле мы полагались на Babel, его применение стало стандартным шагом подготовки веб-проектов к публикации. Сегодня же все необходимые мне новые возможности языка доступны буквально повсюду. В результате Babel мне больше не нужен. До появления в браузерах возможности динамического импорта модулей код приходилось транспилировать в формат CommonJS. Теперь же большинство основных браузеров поддерживает (да и Edge 76+ скоро подтянется). В результате скоро мы сможем поздороваться с ECMAScript-модулями и попрощаться со всем остальным.

JSX. Я не понимаю тех, кто полагает, что JSX — это хорошо. И «Но вы же к этому привыкли» для меня — не аргумент.

Функциональное программирование. Я ограничил применение функционального программирования в своём коде до простых однострочных конструкций вроде . Для всего остального я использую объектно-ориентированное программирование.

Java — лучший выбор

  • Зная Java, с большой долей вероятности вы будете заниматься разработкой enterprise-приложений. Эта работа хорошо оплачивается, ведь заказчики – корпорации, банки и крупные игроки бизнеса.
  • Знание Java дает вам возможность заниматься перспективной, активно развивающейся и также достойно оплачиваемой разработкой мобильных приложений.
  • Подавляющее большинство работающих серверных enterprise-приложений в мире написано на Java, поэтому язык даже при самом пессимистичном раскладе будет поддерживаться ещё очень много лет.
  • Уже много лет Java — один из лидеров по количеству вакансий. Часто работодателями являются крупные компании, а в крупной компании «джуну» легче развиваться, чем в маленькой.
  • Java достаточно прост в изучении. Освоив его, вы овладеете фундаментальными основами программирования, нужными для любого программиста. При этом после него совсем просто изучить JavaScript или Python и гораздо проще подойти к относительно сложному С++.
  • Язык Java более прост в использовании по сравнению с языками С/С++.
  • И последний, но не менее важный пункт: Java-разработка хорошо оплачивается.

С этим читают