ЯЗЫКИ ПРОГРАММИРОВАНИЯ

 

 

 

Среди языков (как знаковых систем) выделяют:

  • естественные (natural language)

  • искусственные (artificial language)

Языки программирования - искусственные формальные языки для создания компьютерных программ.

 

 

 

 

Что? Какие? Сколько?

 

Язык программирования  (programming language) - формальная знаковая система (модель) для описания алгоритмов в форме, понятной исполнителю (компьютеру).

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

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

По разным основаниям выделяют языки:

  • низкого уровня (ассемблеры и машинно-зависимые языки) и высокого уровня (близки к естественным языкам);

  • декларативные, процедурные, объектно-ориентированные, проблемно-ориентированные, функциональные, динамические;

  • последовательные (sequential) и параллельные (concurrent);

  • общего назначения и специализированные....

 

Регулярное обновление и публикацию спецификаций важнейших языков программирования выполняют международные комитеты по стандартизации.

Каталогизировано более 2 500 языков программирования (http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm)

В Энциклопедии языков программирования Progopedia.ru описано:

  • языков программирования: 171,

  • диалектов: 83,

  • реализаций: 348,

  • версий: 734.

В Progopedia.com – 114 языков....

 

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

Язык Piet

 

 

Почему языков столько много?

 

Большое количество языков объясняется различными причинами:

  • изолированностью разработчиков (которые могут независимо друг от друга создавать очень близкие языковые решения)

  • экономическими причинами (выгодно и престижно быть автором популярной языковой платформы)

  • правовыми причинами (авторское право, право собственности, проприетарность и проч.)

  • разнообразием решаемых в программировании задач, для которых эффективны различные языковые решения

  • развитием языков (бывает эффективней создать новых язык, чем обновлять версии старого, обеспечивая преемственность инструментария)

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

  • творчеством (значительная часть языков создается в контексте самореализации разработчиков, саморазвития и самоутверждения, в том числе как произведения искусства и в качестве развлечения)

 

 

 

 

Тьюринг-полнота языков программирования

 

Полнота по Тьюрингу (в теории вычислимости) — реализуемость любой вычислимой функции.

 

Тьюринг-полные языки (обладающие полнотой по Тьюрингу) принципиально взаимозаменяемы!

 

Большинство используемых языков программирования (метамоделей программирования) — тьюринг-полные.

Полными по Тьюрингу являются неограниченные грамматики.

Для реализации разной функциональности эффективно использовать различные метамодели (языки программирования).

Создание языков программирования (метамоделирование вычислительной среды) - увлекательное творчество (языковое, интеллектуальное, эстетическое)

 

Неполные по Тьюрингу формализмы:

  • конечные автоматы,

  • примитивно рекурсивные функции,

  • контекстно-свободные грамматики,

  • регулярные грамматики,

  • Script в Биткоин (что чрезвычайно затрудняет создание Smart contract)!

 

 

 

Низкоуровневые языки

 

Низкоуровневый язык — это когда требуется внимание к вещам,
которые никак не связаны с программами на этом язык (Alan J. Perlis)

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

Работа с машинными командами была средством общения с компьютером  десятки лет назад. Оператор набирал коды машинных команд переключателями на панели вычислительной машины или задавал эти команды с помощью отверстий на перфокартах и перфолентах.

 

Мнемоническая запись команд и операндов (на ассемблере):
......................
LD R5, PRICE
LD R6, TAX
......................

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

 

Компиляторы В 1951 году Грейс Хоппер для автоматизации преобразования команд высокого уровня в машинные создала первый компилятор (compiler - компоновщик) А-0. Он  преобразовывал всю программу, записанную на языке высокого уровня, в машинный код. Преобразованная программа могла либо выполняться сразу, либо сохраняться для последующего использования.

 

Интерпретаторы - это трансляторы языков программирования, которые  не производят исполняемого машинного кода. Они берут исходный текст программы на каком-либо языке программирования и выполняют его сами строка за строкой. Интерпретатор, определяет команду и переводит (интерпретирует) ее так, чтобы операционная система поняла, что от нее хотят.

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

 

 

 

 

 Языки программирования высокого уровня

 

ALGOL (Algorithmic Language) примитивный процедурный язык высокого уровня, разработан с 1957 по 1960 гг. В 1960 - 70-х годах был общепрзнанным языком научных публикаций.

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

FORTRAN (FORmula TRANslator) процедурный язык для численных методов. Разработан в 1957 гг. Джоном Бэкусом (John Bekus) и стал одним из первых языков программирования высокого уровня.

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

Fortran стал фундаментом для современных объектно-ориентированных языков программирования.

В научных подсчётах Fortran остаётся основным языком.

Dennis Ritchie

C (произносится си) процедурный, разработанный Деннисом Ритчи с 1969 по 1973 гг. Широко используется для разработки системных программ: ОС, компиляторов, ПО для встраиваемых систем.

 

C++ (произносится си плюс плюс) разработан Бьёрном Страуструпом  в 1983 г. Объединяет возможности языка Си с объектно-ориентированным программированием. Широко распространён, используется в системном и прикладном программировании.

Bjarne Stroustrup

C# (произносится си-шарп, си-диез) объектно-ориентированный, созданный в 1999–2000 годах в корпорации Microsoft в рамках технологии .NET.

C# содержит элементы Си, С++, Java и Pascal. C#  схож с Java (задумывался альтернативой последнему) и ориентирован на разработку многокомпонентных Интернет-приложений.

 

Никлаус Вирт (Niklaus Wirth) - знаменитый профессор Высшей Политехнической школы ETH из Цюриха, где создал свою школу программирования, автор языков:

Никлаус Вирт: Язык, это то, на чем мы говорим. А на языке программирования мы говорить не можем. Я бы предпочел вместо термина "язык" использовать термин "формальная нотация". Каждая программа является математическим объектом и здесь нет места многозначности, которая является атрибутом естественного языка.

 

Pascal ABC — свободно распространяющаяся система для обучения школьников программированию (2002-2007)Разработка Южного федерального университета (Ростов-на-Дону, Россия).

С 2007 года PascalABC.NET (PascalABC.NET 3.0 (сборка 1150 от 22.01.2016)

В 2009 году появилась WDE (web development environment) - браузерная среда онлайн-разработки на PascalABC.NET.

Python  — мультипарадигменный язык  (поддерживает несколько парадигм программирования: структурное, объектно-ориентированное, функциональное и аспектно-ориентированное) с динамической типизацией, автоматическим управлением памятью и высокоуровневыми структурами данных (хеш-таблицы, списки, кортежи). Создан в конце 1980-х годов голландским программистом Гвидо Ван Россумом.

Применяееся в качестве языка сценариев при написании Интернет-приложений для системного администрирования, доставки веб-контента и т. п. Активно развивающийся язык программирования.

Джейсон Бриггс Python для детей. Самоучитель по программированию  (pdf)

   

Java - интерпретируемый объектно-ориентированный язык программирования. Разработан в 1990-1995гг. группой Джеймсона Гослинга. Java предназначен для создания небольших платформно-независимых Интернет-приложений, которые можно распространять на клиентские машины с Web-сервера, а также включать в Web-страницы для их анимации. Java-программы транслируются в байт-код и исполняются виртуальной Java-машиной непосредственно под ОС. Поэтому, когда рассматривают весь комплекс ПО, связанного с Java, говорят о технологии Java. Технология Java включает в себя клиентскую и серверную части, а также доступ к БД. Она состоит из различных платформ, предназначенных для широких областей применения.

JavaScript  - разработан в 1995 Бренданом Айком (Brendan Eich). Java и JavaScript - совершенно разные языки, хотя и с похожим синтаксисом. Позволяет разрабатывать несложные приложения для Web, которые могут включаться в HTML-документы. Чтобы они были исполнены, JavaScript должен поддерживаться браузером. Языки создания сценариев позволяют улучшить внешний вид Web-страниц и устанавливать связь с пользователем.

Ник Морган JavaScript для детей. Самоучитель по программированию (pdf)

здесь

здесь

здесь

 

 

 

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

Рейтинг языков программирования PYPL:  http://pypl.github.io/PYPL.html

Рейтинг языков программирования TIOBE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Programming Language

Position
Jan 201
8

Position
Jan 201
2

Position
Jan 200
6

Position
Jan 2000

Position
Jan 1985

Java

1

1

1

3

-

C

2

2

2

1

1

C++

3

4

3

2

9

Python

4

8

8

17

-

C#

5

3

7

13

-

Еще один рейтинг: http://truepositive.org/langs.html

28.06.2018 Компания JetBrains (создатель языка программирования Kotlin) представила предпочтения современных программистов. Первая пятерка:

Полностью результаты исследования здесь.

 

 

 

 

 

Языки программирования как хобби

 

What Programming Languages Are Used Most on Weekends?
by Julia Silge
on February 7, 2017

+

Stack Overflow опубликовал очередную подборку статистики о популярности языков программирования по времени суток. Оказывается, некоторые языки более популярны в рабочее время (например, C# и JavaScript), а у других доля заметно растёт вечером (С, Python). Как будто программисты вечером возвращаются домой и занимаются, наконец, любимым делом.

Обзор на рууском: https://habrahabr.ru/post/327026/

 

 

Эзотерические языки

Эзотерика (от др.-греч. внутренний) — недоступное непосвящённым, несведущим, лишенным особых способов восприятия реальности, имеющее тайное содержание и выражение.

Эзотерика противопоставляется экзотерике (как бинарная оппозиция). Ср. сакральное и профанное.

 

Esolang -  (esoteric language, эзотерический язык) — язык программирования, созданный не для разработки программ

 

Linus Torvalds: Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования

 

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

Федерико Томассетти (Federico Tomassetti, архитектора программного обеспечения):

  • Esolang разрабатывается с целью бросить вызов «нормам» моделирования языков программирования. Вызов этот может выражаться по-разному: от простого стремления к чему-то необычному до создания полноценного «художественного произведения (см. здесь)

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

Тьюринг-полный язык INTERCAL разработан с целью добиться полноты по Тьюрингу при максимальной непохожести на существующие языки программирования.

Онлан генератор и интерпретатор языка здесь INTERCAL (для использования требует регистрации)

Среди эзотерических языков (в силу их особенностей) большинство неполные по Тьюрингу языки.

Шуточный язык HQ9+ имеет всего 4 команды (из них и составлено название языка), что позволяет без труда решить на нем все «стандартные» задачи обучающегося на программиста: от «Hello, world!» (команда H) до вывода квайна (команда Q). См: https://almnet.de/esolang/hq9plus.php

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

Brainfuck (вынос мозга -  идиоматическое выражение!)  — язык программирования Урбана Мюллера, созданный с одной целью: написать для него интерпретатор (их уже, наверное, сотни!)

Митчелл Джонсон (Mitchell Johnson, разработчик):

  • Почему появляются эзотерические языки программирования? Потому что…почему бы и нет.

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

  • Программирование на эзотерических языках  — словно попадание в другие измерения.

Список на вики-портале Esolang (из более 1200 эзотерических языков!) регулярно пополняется.

К прочтению:

 

 

 

Языковая основа для ключевых слов

Языки программирования - формальные знаковые системы, основанные на математических нотациях.

В основе всех языков программирования лежат логико-математические языки и системы письма!

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

Использование того или иного национального языка в качестве основы для ключевых слов языка программирования не имеет существенного значения для характеристик языка программирования.

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

Большая доля языков программирования появилась в англоговорящих странах.

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

Существует множество языков программирования с ключевыми словами на разных национальных языках.

Они созданы по разным причинам (политическим, культурно-историческим, художественным, образовательным, развлекательным и др.)

Существуют языки программирвоаияс ключевыми словами на искусственных языках и даже не использующие слов как таковых

  • Whitespace — эзотерический язык программирования, основанный на использовании символьных пробелов).

К прочтению:

 

 

BASIC + Visual Basic + VBA

 

 BASIC  (от Beginner's All—purpose Symbolic Instruction Code, многоцелевой язык символических команд для начинающих).

В середине ХХ века для первых языков высокого уровня (Fortran, Algol, Cobol и др.)  была характерна предметная ориентация и высокая сложность освоения для начинающих разработчиков.

 

В 1925 году британским лингвистом Чарльзом Огденом создан Basic English — базовый английский; международный искусственный язык на основе английского языка с сокращённым словарем (850 слов) и упрощенной грамматикой.

 

  • В 1964 году сотрудники математического факультета Дартмутского колледжа Томас Курц и Джон Камени создали «упрощенный» язык программирования BASIC, чтобы облегчить взаимодействие с компьютером непрофессиональным пользователям.
    BASIC
    состоял из простых слов английского языка. Компилятор BASIC был написан для мейнфрейма GE-265.

  • В 70-х появились персональные компьютеры (ПК).
    Билл Гейтс и Пол Аллен, основатели Microsoft, создали новую версию
    BASIC для персональных компьютеров «Альтаир». Период расцвета BASIC конец 1970-х — первая половина 1980-х годов.

 

Эдсгер Ви́бе Дейкстра (Edsger Wybe Dijkstra):

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

 

  • В начале 90-х появилась Microsoft Windows с графическим интерфейсом. Чтобы создать простую программу, разработчикам приходилось писать по несколько страниц кода для меню и окон, шрифтов, кнопок и т.д.
    Microsoft выпустила в 1991 году
    Visual Basic и среду разработки IDE Microsoft Visual Basic.
    Меню, окна, списки, кнопки, поля ввода текста и др. элементы интерфейса Windows добавлялись в программу с помощью простейших операций drag&drop, а большая часть кода для них генерировалась автоматически. Свою первую программу VB-программисты могли создать уже через час после начала изучения этого языка.

  • В 1994 году компания выпустила Visual Basic for Applications (VBA) в составе Microsoft Office.
    VBA стал одним из основных стандартов программирования для Windows. 
    Разработка приложения в
    VBA состоит из создания взаимодействующих между собой форм (перетаскивая элементы управления (кнопки и списки), с панели инструментов в формы) и написания обработчиков событий для каждого элемента управления формы.

  • С 2005 года Visual Basic входит в состав IDE Microsoft Visual Studio.
    Сегодня
    Visual Basic - мощный объектно-ориентированный язык программирования высокого уровня, от изначальной простоты которого мало что осталось.

VBA - самый популярный язык автоматизации Microsoft Office:

  • Отличная поддержка объектной модели Microsoft Office.

  • Поддержка разных форматов  Microsoft Office. 

  • Легкая установка и дистрибуция (к уже установленному офису не надо ничего устанавливать + легко сделать надстройку, для "установки" модели макроса в фон Microsoft Office.

  • Интерактивность внутри приложений Microsoft  Office. 

  • Запись макросов в  Microsoft  Office. 

09.06.2019  The Rise and Fall of Visual Basic + Responses (перевод + комментарии)

 

 

 

Выбор языка для изучения

 

Важно учитывать:

  • Даже непопулярный по общим цифрам язык может быть крайне важен для какой-либо узкой сферы. Simulink и LabVIEW, вообще не попавшие в Top 50 незаменимы в своих областях.

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

  • Популярность любого языка во многом обусловлена внешними факторами. Так, Objective-C - древнее решение  (1983 год), в 2007 году был на 46-м месте, затем использован работниками из Apple, изучавшими его в детстве,  и теперь в списке самых популярных языков в мире.

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

 

 

 

Ада Лавлейс

 

Язык Ада - назван в память об Аде Лавлейс - дочери великого английского поэта лорда Байрона, первой программистки в истории.

Графиня Ада Лавлейс,  изучала астрономию, латынь, музыку и математику.

Совместно с математиком Чарльзом Бэббиджем она работала над созданием арифметических программ для его счетных машин.

Ее работы в этой области были опубликованы в 1843 году.

 

 

 

 

Русский ДРАКОН

 

В 1976 году в СССР началась разработка многоразового транспортного космического корабля Буран в рамках проекта "Буран-Энергия". В проекте принимали участие 1286 предприятий СССР и около 2,5 миллиона человек.

Свой первый и единственный космический полёт "Буран" совершил 15 ноября 1988 года.

При разработке Бурана проблема разработки и отработки программного обеспечения считалась одной из наиболее сложных.

Для ее решения был создан язык программирования ДРАКОН и на его построена автоматизированная технология проектирования алгоритмов и программ (CASE-технология) "ГРАФИТ-ФЛОКС".

Пуск ракетного комплекса "Морской старт"  (28.03.1999)  cо стартовой платформы "Одиссей" в Тихом океане в районе островов Кирибати был боевым крещением языка ДРАКОН и "Графит-Флокс" и убедительно продемонстрировал их эффективность и надежность.

Язык ДРАКОН успешно используется в других космических программах: разгонный блок космических аппаратов "Фрегат"; ракета-носитель "Протон-М"; модули космических аппаратов проекта "Старт в пустыне" и др.

 

 

 

 

Проблемы развития Python

 

Гвидо Ван Россум (автор языка программирования Python), предложил заморозить его грамматику и семантику на несколько лет.

Гвидо ван Россум: Частые изменения в языке вызывают много головной боли у разработчиков альтернативных реализаций языка Python: Jython, IronPython, PyPy и т.д. без каких-либо преимуществ для конечного пользователя. Основная цель коммьюнити разработчиков языка на данный момент -  дальнейшее продвижение Python3000. Мораторий должен распространяться только на сам язык и встроенные функции, а непрерывное развитие стандартной библиотеки очень важно.

 

 

 

Scratch

 

Скретч  - среда программирования, которая позволяет детям создавать анимированные и интерактивные истории, игры и другие произведения. Этими произведениями можно обмениваться внутри международной среды, которая постепенно формируется в сети Интернет.

Скретч базируется на традициях языка Лого и написан на языке Сквик в 2009 - 2010 гг.

Свободный проект Scratch разрабатывается группой  ученых из MIT во главе с Митчем Резником и Аланом Кеем (Lifelong Kindergarten Group).

Основная задача проекта — стать частью образовательной программы детей и подростков 6 – 16 лет, развить у них творческие способности, логическое мышление и свободу в использовании информационных технологий. Все это предлагается развить с помощью вовлечения учащихся в процесс создания интерактивных презентаций, мультиков, игр.

Сайт Scratch: http://scratch.mit.edu/

Русскоязычное сообщество Scratch: https://scratch.mit.edu/studios/488294/

Конкурс ПВТ: http://park.by/post-1405/ (2017)

 

 

 

 

Тенденции развития языков программирования

 

Concurrency Revolution (параллельная революция). Использование многоядерных процессоров вызывает необходимость соответствующих перемен в области языков программирования, которые  сравнимы со временем перехода к структурному и объектно-ориентированному программированию. Необходим более высокий уровень абстракции и системности. Параллельность не оставит места языкам, которые не смогут ее поддерживать.

Ct (си-ти) - новый язык программирования для создания параллельных высокопроизводительных программ, использующих все возможности многоядерных процессоров Intel.

Ct - представлен  на Форуме Intel для разработчиков (2-3 апреля, Шанхай)

 

Динамические языки (истоки APL и Lisp 50-е г., JavaScript, Perl от Ларри Уолла, PHP от Расмуса Лердорфа, Python Вана Россума, Ruby от Юкихиро Матсумото). В отличие от статических (C++, Java), динамические языки позволяют создавать программы, способные менять свой код и логические структуры во время исполнения, добавляя при этом новые типы, имена модулей, классы и функции. Они интерпретируемые и проверяют типы во время исполнения. На них основаны технологии AJAX (Asynchronous JavaScript and XML), LAMP (Linux; Apache; MySQL, PHP или Python) и Ruby on Rails.

 

 

 

 

 

 

Человек, заработавший на программировании $50 000 000 000

 

Уильям Гейтс (1980): Я не знаю никого, кто разбогател бы на написании программ.

Уильям Гейтс (2006): Мне бы не хотелось быть им [самым богатым человеком мира]. Но ничего хорошего из этого не выходит.

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

27 июня 2008 года  Уильям Гейтс предпочел работе в Microsoft   управление благотворительным  Фондом Билла и Мелинды Гейтс, с капиталом свыше 30 миллиардов долларов.

 

 

 

Языки и технологии программирования в 2017

By Craig Buckler January 18, 2017
What’s the Best Programming Language to Learn in 2017?

 

 

 

теоретический минимум для программиста

 

 

 

Я унылый программист и горжусь этим...

 

29.10.2016

Dan Kim, Android Programmer в Basecamp.
Перевод Катя Шершнева.

Героизм возникает от некомпетентности:
герои нужны тогда, когда дело организовано плохо
и люди не способны исполнять свои обязанности

Борис Стругацкий

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

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

Тем не менее, каждую неделю я вижу, как ищут ниндзя-программистов, читаю о технарях рок-звёздах и слышу, как люди бросаются словом «хакер» (и связанными с ним «хак», «хакфест» и «хакатон»), как будто рандомно ломать что-то на кусочки или вламываться в несанкционированную систему — хорошо. И нельзя забывать про этих волшебников, которые из ничего создают нечто с помощью своей… *магии*

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

Но что, если вы, как и я, не соответствуете этим ярлыкам и не разделяете чувства рок-звёзд-ниндзя-хакеров-волшебников, то делаете что-то не так?

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

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

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

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

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

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

И как плотнику, мне нравится создавать вещи. Иногда это значит следовать определённому плану, а иногда — просто работать с тем, что есть.

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

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

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

И знаете вы это или нет, но все вокруг ценят то, каким простым крутым парнем вы на самом деле являетесь.

Комментарии:

  • Ну, я с вами и согласен и нет… Быть простым программистом круто! Но получать по 2-3 штуки баксов тоже круто!

  • Ну так одно другому не третье. Можно быть "простым" (=скучным) программистом, и получать описанную (да и выше) зарплату.

    • 2-3 штуки баксов это довольно низкий «потолок», вполне простые программисты получают это. «Непростые» получают гораздо больше, в том числе в СНГ.

  • Унылый-то почему? В работе простого программиста, не роз-звезды и не хакера, есть место всему, здоровому смеху, например. И это не от работы зависит, обычно.

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

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

    • Планка квалификации сильно упала. Люди с опытом в 3 года уже раздувают щеки, считают себя великими спецами и легко оперируют 6-значными суммами в рублях. Разумеется, не все такие, но очень значительная часть. На Тостере человек с подписью «я супер-мега-экстра-спец» может задавать совершенно детские вопросы (в «своей» области). Поэтому в объявлении указывают, что ищут «волшебника» в расчете на то, что реально придут нормальные.