TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #577 · 1.10

Закончился второй этап конкурса "Код Петербурга". На первый я отправил скилл для Маруси, позволяющий гибко искать события по базе KudaGo. Но с самого начала говорили, что среди критериев оценки будут метрики: число пользователей и так далее. Там, где есть метрики, нужно делать развлекательный проект или игру, без вариантов. У "полезных" самостоятельных приложений (не связанных с внешним бизнесом) метрик нет почти никогда. Я посмотрел на топ развлекательных приложений в каталоге ВК и увидел, что местная аудитория любит кликеры / idle. Это такие игры, которые максимально абстрагируют игровой процесс: буквально конвертируют время вашей сессии и совершение простейших действий во внутриигровой ресурс. Грубо говоря, вы получаете очки, потому что просто сидите в игре, и на этом все. Ну, иногда нужно нажимать на экран. О причинах популярности и кажущейся примитивности этого жанра я сейчас рассуждать не берусь, но во второй этап решил сделать кликер про музеи Петербурга. Напомню, что одно из условий конкурса: использовать API городских сервисов. Здесь я взял базу данных Министерства Культуры. В игре "Музейный Барон" вам нужно нажимать на посетителей с разными предпочтениями, получать с них деньги, на которые строить музеи, позволяющие получать еще больше денег, в том числе автоматически. Музеи, разумеется, настоящие. Я, кстати, пока подбирал, узнал о нескольких новых, которые хочется посетить. Еще есть, например, возможность в реальности зачекиниться по GPS у нужного музея и получить его со скидкой. И, конечно, я не отказал себе в удовольствии сделать отдельный режим "Ночь Музеев", генерирующий в разы больше посетителей. Вообще, делать кликер было интереснее, чем кажется. Отдельно пришлось придумывать, как не допустить написание игроками ботов для автоматизации. Ну и математику тоже пришлось продумывать, строя графики, хотя, кажется, есть куда улучшать. #dev#games

Hashtags

Резултати

Намерени 1,883 подобни публикации

Общо глобално търсене

Но здесь проявляется важный нюанс. На самом деле, он есть везде. Чтобы скомандовать компьютеру что-то сделать, ты должен понимать, хотя бы на общем уровне, как работает компьютер — а это уже часть мышления программиста. Для хорошей работы с экселем тебе придётся использовать формулы, в которых есть не только обычная алгебра, но и, например, логические выражения. Для работы в конструкторах алгоритмов тебе нужно понимать, что такое цикл и условный переход. В какой-то момент понадобятся и структуры данных, например, индексированные массивы (просто вы не будете их так называть, но работать с ними придётся). Даже чтобы собрать что-то в Tilda, нередко нужно хотя бы в общих чертах понимать, как работает вёрстка, допустим, на экранах разных размеров. Что такое пиксель, чем отличается внешний отступ от внутреннего и так далее. В итоге изначальная цель — совсем отказаться от программистов — выполняется лишь частично. Для хорошей работы с nocode-сервисами нужно в некоторой степени программистское мышление. Не получится любой домохозяйке за пару минут натыкать себе подборщик рецептов, если только она уже не является человеком, который при желании и программирование бы мог выучить. Появление специальных вакансий только подтверждает это: если бизнесу нужен условный Senior Tilda Developer, значит, не может любой уборщик в компании набивать лэндинги. Впрочем, это, конечно, дешевле, чем нанять разработчика, и в этом смысле nocode задачу выполняет (с поправкой на то, что сами по себе сервисы могут быть дорогими, а ещё ты к ним навечно привязываешься). В итоге nocode сервисы это в некотором смысле сервисы для ленивых программистов, а не для всех без исключения, как им хотелось бы быть. Естественно, к полному отказу от программистов это тоже не приведёт — как я уже упомянул, немало работы всё ещё требует большой гибкости. Создание собственного уникального продукта, которым потом будут пользоваться другие — один из таких видов работы — и именно она нужна очень многим бизнесам. #dev

Hashtags

Если верить открытым источникам, рынок электросамокатов в России главным образом держат Whoosh и Urent (хотя сейчас ещё Яндекс вклинивается, и с его ресурсами это вполне возможно). При этом у Urent больше городов и больше самокатов, чем у Whoosh, но ниже доходы. Я подумал: наверняка бизнес-аналитики Urent днями и ночами сидят и ломают голову, что бы им поменять и улучшить, чтобы начать выигрывать эту конкуренцию. Строят теории, проводят тесты. Сложная работа, в общем, бизнес и рынок не такие предсказуемые вещи. А потом я воспользовался Urent и за 5 минут нашел столько косяков UI/UX в приложении, что мне стало всё понятно. Кроме того, почему Urent ничего с этими косяками не делает. 1. Сканирование кода в Whoosh приводит к появлению полноэкранной модалки с большими кнопками и основной информацией о самокате и стоимости. Сканирование кода в Urent выдает в самом низу экрана блок кнопок, в которые не только очень сложно попасть, но его ещё и надо скроллить (см. левый скриншот). При этом весь экран занят уже не нужной к этому моменту камерой. Такой интерфейс заточен под перебор самокатов, но на деле человеку на улице на ходу нужно просто максимально быстро взять первый самокат, к которому он подошёл. 2. О том, что страховка включена и будет стоить дополнительных денег, можно догадаться только за счёт знания об этой функции из других сервисов. Да, Whoosh, конечно, поступает очень по-мудачески, постоянно автоматически включая платную страховку, из-за чего её надо выключать вручную каждый раз при каждом заказе. Но в Urent необходимость этого действия ещё и довольно неочевидна (а страховка тоже, конечно же, по-умолчанию всегда включена). 3. Я отсканировал самокат, затем нажал подтверждение заказа. Система после этого написала мне, что данный самокат недоступен. Неужели, нельзя об этом писать ещё на этапе сканирования? Зачем выводить кнопку заказа для недоступного самоката? 4. Кнопка перехода к текущей геопозиции перекрыта неубирающейся шторкой снизу (см. правый скриншот). И это только вещи, которые прям за первые 5 минут выявляются и очень на поверхности. А исправить их может один программист и один дизайнер за пару недель. Удивительно, как некоторые бизнесы не хотят зарабатывать. #dev

Hashtags

Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение. Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными. Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать. Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку. В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир". В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее. #dev

Hashtags

Два года назад я писал, что поучаствовал в грантовой системе от Фонда Содействия Инновациям и получил 500к рублей на разработку нескольких NLP-алгоритмов для русского языка. Кратко: если у вас есть проект, который по каким-то признакам является научно-исследовательской работой, вы можете получить на него чуть-чуть денег просто так, в обмен на нужные бумажки. Схема рабочая и без обмана, но дьявол в деталях, сейчас расскажу. Вчера я закрыл всю отчётность, окончательно выполнив свои обязательства. Деньги получил гораздо раньше, и уже давно все потратил. В комментариях мне тогда говорили, что государственный фонд может бесконечно долго давить непонятной бюрократией, и потом трижды пожалеешь, что взял деньги. Это и верно, и нет. Скажем так: у меня были отдельные моменты, когда я задумывался, что лучше бы не стал в это вписываться. Но ретроспективно думаю вот что: в тот момент деньги были нужны, и, пожалуй, на этот риск идти стоило. А если вы начинающий специалист или вовсе студент, то вдвойне оправдано. В целом претензии у меня три: 1. Реальный результат работы никого не интересует. Отчётность важнее, чем то, делали ли вы проект, и есть ли у вас какое-то достижение. Я алгоритмы написал, как обещал, но, судя по всему, никто не смотрел ни код, ни репозитории, ни готовые проекты на базе этих алгоритмов. Абсолютно все замечания были по оформлению. Я должен был сдать последний этап 23 января, я сдал собственно саму работу, и вот всё это время до конца марта я закрывал документы. Настоящая значимость этих документов в десятки раз ниже, чем значимость проекта, но для завершения процесса нужны именно отчёты, а то, что вовремя проделана огромная работа и получен реальный результат, никого особо не волновало. Думаю, если бы я не писал алгоритмы, а составил только отчёт, это прокатило бы. 2. Отчётов нужна тьма, все они до боли бюрократичны и канцеляричны. Формы заполнения стандартизированы, и это полнейший ад. Дело даже не в объёме информации, хотя это тоже беда. Просто часть полей не подходят для конкретных случаев (например, нужно указать материал, из которого сделан продукт, а у меня компьютерная программа), а другая часть полей — бессмысленная абстракция, которая непонятно каким образом родилась в голове составителей. Что-то вроде: "Аргументируйте выбор способа решения задачи", "Аргументируйте выбор пути решения задачи", "Аргументируйте выбор метода решения задачи" — это три разных поля, и заполнять их нужно разными данными! 3. И самая жуть — по необъяснимой причине ваша научная работа на бумаге должна трансформироваться в приносящий деньги бизнес. По завершении работы вы должны пройти аккредитованный "преакселератор" и составить "бизнес-модель". Это шаблонный многостраничный документ, который вы заполняете заумно звучащей водой про анализ "рынка" и "конкурентные преимущества" по совершенно вымышленному продукту, который никогда не будет существовать, потому что в настоящем мире ни научные исследования, ни бизнес не работают таким чудовищно наивным и поверхностным образом. Отдельная часть этого документа — эксель таблица с частично заблокированными ячейками, куда вам нужно вбить цифры из воздуха так, чтобы показать "окупаемость". Никого особо не волнует, что для "окупаемости" нужно платить программисту 25 тысяч в месяц, а в первый день выпуска продукта продать его сразу тысячами единиц. В общем, отчёты описывают несуществующий мир, рождённый фантазией людей, которые некомпетентны ни в науке, ни в бизнесе, но умеют и любят причинять боль бумагой и ручкой. Sticks and stones. Однако, если принять эти странные правила игры и согласиться прорываться через заросли, то вы получите деньги и мотивацию закончить какой-нибудь собственный проект. С помощью этого гранта я добил кучу кода, который и так собирался сделать, получил три успешные статьи на Хабре и попадание в Программу Поощрения Авторов, а также реализовал несколько платных заказов в том числе на основе сделанных наработок. Кстати, факт существования реальных продаж не играл абсолютно никакой роли при составлении доказательства, что моя разработка может приносить деньги :) #dev

Hashtags

Много лет назад я делал игру ВКонтакте про домики. Одно общее изометрическое поле, где у каждого свой участок, на котором можно строить дом, выбирать его размеры, материалы, форму окон и крыши. И обставлять мебелью. Поле было квадратным 100 на 100, соответственно у каждого квартала был номер по одной оси X от 0 до 99 и по другой Y от 0 до 99. По какой-то причине мне тогда нужно было сохранить это в одном числе как идентификатор квартала, и я подумал, что изобрёл гениальный способ: A = X*100 + Y. Извлечь обратно тоже было легко: поделить A на 100 и округлить вниз, это получался X. А потом Y = A - X*100. Например, квартал с координатами 13-29, собственно, так и записывался: 1329. Важно, что это математические операции, а не строковые. Они и сами по себе быстрее выполняются программой, и позволяют, например, удобно отсортировать участки. Я считал себя очень умным, не зная тогда, что по сути изобрёл системы исчисления, и вообще подобный подход очень банален и прост. Мы куда чаще видим это в битовых масках, потому что и сама задача для двузначных свойств возникает чаще, и компьютер существенно быстрее работает с битами, но от того, какая там база системы исчисления, математический смысл не меняется. Если тебе надо записать в одно число несколько свойств, каждое из которых может быть в N значениях, то в это число должно влезать N*N*N... сколько там у тебя этих свойств. Ты пишешь первое свойство n1, потом прибавляешь n2*N, потом n3*N*N и так далее. Величины существуют в разных разрядах N-ричной системы исчисления, поэтому не пересекаются, и их можно разделить. Игра, кстати, поначалу хорошо набирала пользователей, а потом перестала. Я думал, что она не интересная, и закрыл проект. А сильно позже уже выяснилось, что был баг в коде регистрации игрока, из-за чего новые приходить не смогли начиная с какого-то момента. В том самом коде, который извлекал координаты квартала из его идентификатора, да. #dev

Hashtags

Позавчера начался крутой замес на GitHub, и вчера продолжался весь день. Есть такая очень популярная JS-библиотека Vue. Реально миллионы проектов в мире её юзают. У неё есть консольная утилита vue/cli, у которой несколько зависимостей. И автор одной из таких зависимостей встроил к себе в пакет код со скриншота. Там с помощью кодирования по принципу Base64 скрыто намерение проверить IP-адрес пользователя, и, если он из России или Беларуси, то стереть все файлы у него на компьютере, заменив их содержимое на символ ❤️. Такой вот протест. Сообщество довольно быстро это обнаружило. И — я редко видел такое единение душ — китайцы, американцы, турки, даже, кажется, один немец — куча иностранцев закидала этого разработчика ссаными тряпками (сам он из США). Все его попытки оправдаться заминусили, отправили жалобу в npm и оперативно удалили пакет, а самого автора обозначали не заслуживающим доверия. Вообще, open-source разработка это коммунизм. И люди, которые ей занимаются, нередко придерживаются космополитических и до некоторой степени анархических взглядов. Среди них есть противники государств в целом, как способа организации общества, и у них очень хорошие (хотя и несколько наивные) аргументы на этот счёт. Ну и они совершенно точно умеют отделять действия властей от действий и решений обычных граждан. А ещё разработчики в основном довольно умные люди, с логикой и критическим мышлением. Почему-то никто из американцев не испугался, что у репозитория ухудшится репутация за отказ саботировать русских. Даже наоборот: они резко критиковали деструктивные по отношению к обычным пользователям действия и заканселили чувака, который эти действия предпринял. То есть делали совершенно не то, что делают корпорации и крупные руководители в тех же странах. Представьте себе: обычные люди думают не так и хотят делать не то, что руководители. Кто бы мог подумать. #dev

Hashtags

Попробовали на работе предметно-ориентированное проектирование (Domain Driven Design). Это такой способ построения архитектуры, когда ты (чаще всего с помощью системы типов и ООП) описываешь физическую суть вещей, которые представлены в твоей программе. Например, если в программе есть объект "Книга", то её нужно снабдить свойствами, которые бывают у книг в реальности: число страниц, автор, язык, тип обложки и т.д. При этом данные свойства должны быть такими, чтобы присвоить им нереалистичные значения было нельзя. Допустим, число страниц не может быть отрицательным (и скорее всего в реальном мире не может быть нулём). При попытке установить отрицательное число страниц программа должна выбросить исключение. А совсем в идеальном случае -- не дать этого сделать программисту на уровне статического анализа кода. Описав все свойства книги, вы снабжаете её операциями, которые над ней можно сделать. Например, из книги можно вырвать страницу, и при этом число страниц уменьшается. Нет такого случая, когда можно вырвать страницу без изменения числа страниц. Вы строго программируете эту зависимость, делаете у книги метод "Вырвать страницу", а он уже уменьшает число. Кстати, свойство "Число страниц" при этом нельзя переназначить в уже созданной книге. Можно только создать книгу, передав в её конструктор (так называется в программировании функция создания объектов) заданное число страниц. Но поменять число страниц можно только специальными методами "Вырвать страницу" и "Вклеить страницу". С помощью этого подхода вы гарантируете, что ваши объекты всегда находятся в валидном состоянии -- то есть таком, которое возможно в реальной жизни с объектом, представленным программой. Плюсы подхода очевидны: меньше число ошибок. Код описывает сам себя, и программист, если не лезет внутрь объекта "Книга", вообще не сможет сделать с книгой ничего недопустимого. Минусы, думаю, тоже понятны: изначально проектировать сложнее, нужно учесть много нюансов, писать тесты. Время разработки изрядно растёт. Изменение требований даётся дороже: например, если каким-то образом в ваш книжный магазин поступят книги со страницами из кевлара, которые невозможно вырвать :) Но первый проект с этим подходом мы сдали хорошо, без багов. Лучше, чем многие предыдущие. #dev

Hashtags

Лигатура — это символ в типографике, образованный слиянием двух (или более) других символов. Например, в скандинавских языках есть символ Æ — он хранится и печатается как один символ, неразрывно, но, очевидно, образован совмещением букв A и E. В программировании тоже есть лигатуры. Если у вас мощная среда разработки и подходящий шрифт, то вы, как правило, можете их включить. И тогда ваш текстовый редактор будет отображать некоторые парные и тройные символы, как один. Например, последовательность -> может превратиться в символ →. Это нужно только для отображения, на содержимое настоящего текстового файла настройка никак не влияет, потому что компилятор или интерпретатор языка ждёт именно ->. Я категорический сторонник использования лигатур в IDE. Если вы никогда не пробовали, рекомендую включить и поработать с ними несколько дней, а может даже недель. Посмотрите на две конструкции ниже. Символы => и <= очень похожи между собой визуально, но при этом их суть принципиально разная. Включение лигатур позволяет отразить эту суть и избежать некоторых возможных ошибок (например, путаницу между >= и =>). #dev

Hashtags

Сопоставление с образцом (pattern matching) — сильный механизм языков программирования, который, к сожалению, встречается не так часто. Причём, как в коде разработчиков, так и в поддержке со стороны самого языка. Разработчики на функциональных языках используют этот механизм довольно часто, потому что у них вообще многое определяется статически через правильный подход к системе типов. Разработчики же на императивных языках очень любят огромные многоуровневые ветвления. Есть даже такое понятие «Спагетти-код» — раньше его применяли к коду, перегруженному операторами перехода, но в современном виде это скорее об избытке операторов условия. Pattern matching позволяет накладывать на объекты некоторый трафарет и смотреть, попадают ли они под него. Это не только выглядит лаконичнее и короче, чем дерево условий, но ещё и понятнее с точки зрения восприятия человеком: вот у нас заказ содержит более 10 элементов и при этом стоит более 1000 долларов, значит делаем на него скидку 10 центов. При этом трафарет работает как сортировщик монеток: самая маленькая проваливается в первый паз, следующая по размеру в следующий итд, применение условий идёт сверху вниз. Есть и неявный плюс: такой подход автоматически провоцирует разработчиков проводить проверку на null. Ведь null не может подходить под трафарет «содержит более 10 товаров». К счастью, в C# этот механизм в последних версиях активно развивают и совершенствуют. И это одно из многочисленных преимуществ C# над Java. #dev

Hashtags

Допустим, вы разработчик, и вам от пользователя приходит строка user-agent с описанием того, каким браузером он пользуется. В этой строке будет что-то типа такого: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 И вы хотите из неё узнать мажорную версию Chrome, то есть вытащить число 51. Что вы сделаете? Можно, конечно, написать свой парсер, но я уверен, многие воспользуются регулярными выражениями. Я бы воспользовался. Какое выражение сюда подходит? С виду кажется, что вот такое: /Chrome\/(\d\d)\./g Мы ищем слово Chrome и слэш, затем ловим в группу две цифры, после которых стоит точка. Так? По крайней мере, мышление достаточного количества разработчиков именно таково. Зачастую программистам не хватает умения отойти от техзадания на уровень вещественной сути того, с чем они работают. На самом деле число 51 это версия. Версия будет увеличиваться со временем. «Марти, где твоё четырёхмерное воображение?» Если уже прошло 50 версий, то и следующие 50 не за горами, число станет трёхзначным, регулярка или парсер, сделанные под двухзначные числа, перестанут работать. Трехзначная версия Chrome и Firefox приближается уже сейчас. И да, в них падает куча функций на сайтах, включая крупные корпорации: Yahoo, Bethesda, HBO и бог знает сколько сайтов поменьше. Чисто из-за цифры. Это уже назвали «Проблема сотой версии» по аналогии с «Проблемой 2000 года» (программисты записывали год двумя цифрами, 2000 стал неотличим от 1900). К чему это я? Полезно задумываться о физическом воплощении того, что вы представляете в своей программе. Ваш код должен описывать не столько требования заказчика, сколько законы, по которым существует этот объект в реальном мире. #dev

Hashtags

Увидел тут проект Doka Guide. Это такой ресурс, на котором авторы пытаются писать техническую документацию простым языком. В целом, идея не нова: "Объяснять что-то энциклопедичное человеческим языком, будто рассказываешь другу, а не читаешь лекцию". Это ещё Лурк использует — там многие вещи вполне себе содержат настоящие знания, но простыми словами. Пока есть вопросы к реализации, конечно. Например, я увидел в статье опечатку, но к системе не подключён никакой модуль исправлений (как на новостных сайтах — жмёшь Ctrl+Enter и отправляешь сразу ошибку редактору). То есть мне надо искать эту статью в репозитории, делать форк, оформлять пулреквест... Лениво. Структура местами странная. Статья о трёхслойной архитектуре в блоке JavaScript, хотя эта концепция не только не связана конкретно с JS, но он ещё и один из наименее удачных примеров её применения. Потому что вообще такие архитектурные паттерны для сложных энтерпрайз-разработок, как правило с сильной статической системой типов на каком-нибудь Java или C#. Осталось стойкое ощущение, что авторы знают только JS и фронтенд. Впрочем, я всё равно не понимаю, как с развитием проекта в одну кучу свалят документацию по всем популярным языкам. Тем не менее, инициатива отличная, и я желаю проекту хорошего будущего. Для начинающих фронтендеров там уже есть много ценного. Буду посматривать иногда, что там происходит. #dev

Hashtags

Какой язык программирования учить? У меня есть ответ. Каждый год один из крупнейших в мире порталов для разработчиков StackOverflow проводит опрос своих пользователей. В этом году его ещё не было, но я решил взять из результатов 2021 года два графика и объединить их. На графике расположены языки программирования в следующих координатах: - По горизонтали "Приятность". Мера того, как разработчики отзываются о своих чувствах по отношению к языку, сколько удовольствия он им доставляет, насколько им приятно на нём писать. Эта шкала в процентах, и опрос составлен так, что значение ниже 50% следует понимать как "язык скорее неприятный, чем приятный". - По вертикали "Популярность". Буквально, людей спрашивали, с какими технологиями они по факту работают в своих проектах. Чем больше голосов — тем чаще язык встречается. Здесь я провёл черту по матожиданию всей выборки, которое равно около 14%. Использовать в данном случае медиану мне кажется неправильным, потому что она сильно зависит от того, попал ли какой-то язык в опрос или нет. А очень много языков не попало. В целом субъективно я бы описал квадранты этого графика так: 1. Справа вверху популярные и приятные языки — можно смело брать и учить любой, и вообще они вверху списка на рассмотрение. Но следует понимать, что и другие люди могут хотеть в первую очередь выучить именно их, так что конкуренция на рынке труда будет высокой. 2. Слева вверху популярные, но менее приятные языки — в основном это устаревшие технологии, на которых очень много легаси. На мой взгляд, это надёжный вариант, чтобы найти высокооплачиваемую работу. Рынок не скоро сможет отказаться от них, а поддерживать кому-то надо. 3. Справа внизу приятные но менее популярные языки. Кажется, логично взять какой-то из них в качестве второго языка, на котором вы будете делать пет-проекты для личного удовольствия и саморазвития. Кстати, все функциональные языки попали сюда. И некоторые языки оттуда будут уходить наверх: например Go и Kotlin уже вырвались. Уверен, опрос текущего года покажет их подъём. 4. Ну и слева внизу Бездна Боли. У которой есть неожиданное дно: если язык не очень популярен, и люди его не любят, то вы, как специалист, будете чудовищно ценным в тех немногих местах, где язык всё-таки используют. Говорят, разработчики на COBOL получают фантастические деньги даже по меркам IT. Оба ещё живых разработчика на COBOL, да. Следует внести одну поправку: на графике отсутствует такой параметр, как "сложность". Она тоже, безусловно, влияет на выбор. Что более важно — она влияет и на положение языка по другим параметрам. Так, например, люди, которые попробовали относительно простые JavaScript и Python, могут на этом остановиться и не браться ни за какие другие языки. И такие люди будут отмечать JavaScript и Python как приятные, приносящие удовольствие. Я тоже когда-то любил JS. И даже любил PHP. Пока не попробовал Java. Потом я какое-то время был в восторге от неё, пока не попробовал C#, и сейчас считаю его лучшим языком. Вполне возможно, что через 5 лет я буду писать на Clojure и не понимать, как я мог так восторгаться ужасным C#. #dev

Hashtags

12•••1516171819•••100•••156157