На дворе 2020 год, и Python и Javascript являются ведущими языками, и вклад этого приложения для отслеживания Github подтверждает это. Однако есть много статей и публикаций, пытающихся продвигать новые языки. Но зачем отрываться от такого большого и процветающего сообщества, где в эпоху Open Source поддержка часто бывает бесплатной?

Зачем реклама и статьи?

Естественное желание

Это существует всегда и в каждом языке программирования. Есть два фактора, объясняющих, почему статьи о том, что «Python и Javascript заменяются классным новым языком X. Как секс продается, так и концепция новых языков. Проще говоря, программистам становится скучно, и они часто фантазируют о каком-то новом привлекательном языке, который может решить больше проблем или предложить больший набор функций с меньшим количеством строк кода. У многих из нас есть личность типа «герой» — мы все хотим или хотим быть людьми, которые могут быстро и эффективно решать бизнес-задачи, или можем иметь желание продвигаться по службе.

Вместо этого это стремление к новому языку можно свести к решению. Вот как мы должны начать рассматривать это — как проблему, которую мы можем решить с помощью имеющихся у нас инструментов. Разница между одним языком и другим заключается в том, что код написан. Большинство языковых интерпретаторов или компиляторов можно перепроектировать или заново реализовать перед лицом загроможденных кодовых баз. Большинство проблем можно решить, предложив фреймворк, который решает проблему под рукой. Есть крайние случаи, когда обычный сценарист/программист/специалист по обработке данных может утверждать, что совершенно новый язык является жестким требованием, но 99% не живут и не дышат этим пространством. TLDR нам следует создавать фреймворки, когда возникает потребность в новых функциях, а не изобретать новый язык. Аудитория и сообщество будут рядом, чтобы помочь укрепить вашу новую структуру и улучшить указанную функцию.

Деньги и мотивация

Если бы я сказал вам, что у меня есть следующая идея iPhone и у меня уже есть инвесторы, и я пытаюсь убедить вас, что вы тоже должны инвестировать, вы могли бы вкратце развлечься в моем выступлении. Мы все заинтересованы в способе, который может решить наши проблемы программирования быстрее, но что иногда является самым интересным, так это скрытый драгоценный камень, который широко не используется, поскольку в нашей отрасли он может поставить одного человека, группу, или компания над конкуренцией при реализации, если она является новаторской. Примерами могут быть React & React Native или Chromium Engine V8, WebAssembly или LLVM. Тем не менее, есть естественная аудитория, но на ней легко заработать. Должна быть очевидная польза для читателя.

Проблема заключается в том, что эти читатели естественным образом склоняются к этим статьям, и им приходится тратить время на обработку представленной информации, будь то чепуха или что-то другое. Хорошо продуманная статья может удерживать внимание автора, в то время как заголовки, привлекающие внимание, могут достигать того же числа и быть наполнены наполнителем. Тот же самый заполняющий контент мог бы (и, вероятно,) генерироваться машинным обучением с помощью НЛП. Medium специально предлагает модель контента, в которой писатели могут зарабатывать деньги за написание статей или ведение блога. Мне нравится этот сайт, но с тех пор, как я стал его читателем 2–3 года назад, качество публикаций сильно упало. Некоторые статьи за 20 000 просмотров могут принести до 600 долларов. Это приравнивается к подработке для некоторых писателей, технических или нет. Помимо среды, Google Ads или прямой издатель или средство массовой информации могут предложить большой дополнительный доход.

Знаешь, что лучше правды? Несколько общих заявлений и дополнительные 2400 долларов в месяц на стороне. В результате появляются статьи о технологиях в стиле таблоидов. Дезинформация в форме получения доходов или политических диверсий — это хлеб с маслом для онлайн-чтения в 2020 году.

Давайте будем реалистами

У Javascript и Python много общего. С одной стороны, Javascript и Python предлагают несколько стабильных и заполненных менеджеров пакетов с хорошей репутацией в сообществе. Они в хорошем состоянии, и в них было вложено много труда, чтобы сделать их безопасными, или то, что мы называем в сообществе «готовыми к производству» (мы видели, как кто-то из крупной компании попробовал это первым).

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

Суть программирования: делай правильно и быстро

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

  • время для результата
  • лицензирование, которое не будет юридически разоблачать вас, предпочтительно лицензирование MIT или подобное
  • необязательная статическая типизация, поэтому я могу быть немного более свободным со структурами данных
  • массивная легко устанавливаемая библиотека фреймворков, помогающая ускорить получение результатов
  • возможность переупаковывать программное обеспечение для повторного использования в другом проекте
  • большое предложение платформы (базовая рабочая станция — ПК/поддержка Unix/iOS/OSX/Android/Chrome OS/Windows)
  • Поддержка архитектуры с несколькими процессорами (в последнее время поддержка ARM)
  • нет жестких требований к конкретной операционной системе или интегрированной среде разработки
  • у языка нет общих «заминок» при разработке — пользовательский интерфейс сам по себе чист или не содержит ошибок
  • поддержка расширенных функций вне написания скрипта
  • большая база поддержки для поддержки вашего кода, помощи вам, а также позволяет вам имитировать/украсть код
  • в том же духе, что и выше, желателен генератор шаблонов для общих проектов.
  • безупречное предложение документации для любого из вышеперечисленных
  • удобочитаемость или поддержка общих шаблонов проектирования
  • другие дополнительные дополнительные элементы (работает с распространенными инструментами devops, модульным тестированием и т. д.)

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

Python и javascript извлекают выгоду из NPM, pip и 15-летних статей. Истинные точки страданий — это изменения с течением времени, которые ломают старый код, который можно найти в статьях, который может обескуражить кого-то, кто не сможет быстро получить результаты.

Наконец, люди устали писать программы и ничего не получать целыми днями. Я бы сказал, что движение за открытый исходный код, хотя и фантастическое, является самым большим злоупотреблением синими и белыми воротничками, которое я когда-либо видел. При этом Python получал средства из нескольких источников, чтобы его среда оплачивалась и заполнялась, в то время как NPM только что был приобретен Github (ранее у них были проблемы).

Непосредственные плюсы Python:

Вот как python соответствует многим критериям

  • [Упаковка/Воспроизводимость] менеджер пакетов pip, setuptools и шпагат для создания указанных пакетов, а также ironpython и Anaconda
  • [Документация] встроенный сервер документации, объясняющий весь язык, огромен и может решить большинство ваших вопросов «как бы я это сделал», даже если бы у вас не было интернета
  • [Заслуженное общественное доверие] новейшие выпуски невероятно многофункциональны и хорошо написаны/проверены в производстве, при поддержке большинства крупнейших социальных сетей в мире.
  • [Время до результатов] Библиотеки фреймворка огромны — для обычных задач, таких как веб-серверы, есть 22-страничное руководство по воссозданию архитектуры в стиле facebook, которое вы можете себе представить, то же самое со многими другие фреймворки, предлагаемые pip
  • [Trails Established] годы мелких странных задач, таких как автоматизация рабочего стола, хорошо решены в Python. Блоки документов, встроенные в язык, а также такие фреймворки, как Sphix, упрощают автоматическое документирование вашего кода.
  • [Взаимодействие] Библиотеки обработки и обработки данных, использующие системный язык C нижнего уровня/cython, для улучшения производительности.
  • [Набор функций] Машинное обучение, просмотр и обслуживание веб-страниц, программирование сокетов и общая поддержка баз данных и операционных систем невероятно хороши. Асинхронность/параллелизм снова и снова решалась с уточнениями.
  • [Гибкость типов данных]Статическая типизация не требуется, поэтому вы можете быстро добиться невероятной гибкости со структурами данных. Это позволяет нам расти по мере необходимости по мере развития проектов. Это также намного удобнее для новых программистов.
  • [Предложение платформы] Такие платформы, как Kivy, Tk, Wxpython и многие несколько более старые, но все еще актуальные платформы, позволяют нам программировать графические интерфейсы или предложения для мобильных устройств.
  • [Читаемость] Из-за жестких требований к отступу программисты вынуждены писать удобочитаемый код, который в противном случае мог бы использовать конечные фигурные скобки. Часто те же люди, которые жалуются на то, что это PITA, — это те же люди, у которых есть спагетти-код.
  • [REPL] вы можете быстро запустить код, не дожидаясь "сборки" и тестирования, увидеть результаты и вернуться к работе.

Непосредственные преимущества Javascript

Javascript… Это включает в себя среду выполнения Chrome V8 NodeJS, которая переводит нас на сторону сервера вместе с Typescript. Давайте посмотрим, как складывается Javascript:

  • [Гибкость типов данных] типизация не применяется. На самом деле я бы сказал, что все является объектом в javascript, с предложениями родительских/дочерних атрибутов и неопределенными возвратами, что позволяет javascript работать без жестких остановок вашей программы.
  • [Предложение платформы] У всего есть веб-браузер, и если это не ваша скорость, NodeJS доступен для всех архитектур ЦП. Многие фреймворки позволяют писать код для iOS/Android (React Native/*), а также создавать автономные настольные приложения (Electron/*).
  • [Кривая обучения]Вы можете начать как интерфейсный веб-разработчик, постепенно пробуя javascript во внешнем интерфейсе, а затем перейти к Typescript, который позволит использовать статическую типизацию и более красивый/многофункциональный код с типичными объектно-ориентированными конструкциями.
  • [Набор функций] Набор функций в javascript безупречен. NodeJS использует природу браузера Chromium V8, чтобы использовать и предлагать программирование, управляемое событиями, наряду с асинхронным программированием из коробки. Такие предложения, как Tensorflow, предложения чат-ботов, программирование сокетов, Express, React, Vue, Angular, NuxtJS и многие другие, предоставляют практически все функции, которые вы хотели бы иметь в языке.
  • [Управление пакетами]NPM и yarn имеют огромное разнообразие фреймворков и упрощают упаковку.
  • [REPL] Как правило, JavaScript интерпретируется. В частности, хотя в веб-браузере библиотека javascript может быть просто связана на странице и загружена из любого места, а затем использована на вашей странице для тестирования нового кода в консоли.
  • [Корпоративная поддержка] Yarn предоставляется командой Facebook вместе с React, а NPM теперь принадлежит Github — изначально Microsoft. Технологические гиганты приложили большие усилия для поддержки и развития ландшафта в Javascript.
  • [Следы установлены] Введите javascript «how do I x» в поиске Google — я вызываю вас. Существует полдюжины средних статей, YouTube и видеоролики о переполнении стека о том, как делать то, что вам нужно.

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

Вынос

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