Comments 124
оценивают, насколько часто пользователи ищут туториалы по конкретному языку. Ведь, по мнению создателей рейтинга, именно поиск туториалов показывает, насколько популярен язык конкретно сейчас.То есть — это рейтинг популярных к изучению языков, а не рейтинг использования, так?
Если С и С++ выучены много лет назад, то и искать туториалы по ним вряд ли будут, а из-за относительной сложности С++ после прочтения пары страниц «С++ за 21 день» многие ищут, что полегче и выбирают Java(Script)?
А если я гуглю nodejs — я что изучаю при этом?
Ну вы поняли, надеюсь. Экосистема языков, особенно сложных — она очень широкая, и запросы к поисковикам могут быть самые разнообразные. И попытка как-то их ограничить — она явно искажает результаты.
И да и нет.
Если даже взять просто тупое количество запросов названия языка программирования в гугле — уже это будет достаточно репрезентативным. Объективной назвать такую метрику довольно сложно, но когда разрывы различаются на порядки — тренд не обнаружит только глухослепой, а другого в общем-то и не требвоалось.
Даже больше того — какую-то объективную метрику искать даже и не надо, как делать объективный срез. В целом, python уже лет сто стал стандартом дефакто, а javascript, не смотря на некоторую корявость, засел в браузерах и никак не собирается оттуда как-то деваться. Java — стандарт надёжных систем, а Си — ну это то, на чём первые три пишутся. Это анализ если пытаться в объективность, хотя и не сильно претендует. Но. Зачем оно надо? Кроме как тренировки ума никаких действительно полезных выводов из неё не следует, а вот банально прощупать тренды — полезно. Перед выбором фреймворка для изучения, при запуске нового проекта и вот это всё. И таким действиям особо не нужны объективные выводы, и даже более того — они могут быть вредными, так как можно будет взять объективно крутой и прогрессирующий Dart и потом офигеть от того, где он сейчас. Тогда как TypeScript воспринимался как каким-то подобием. При всём при этом сбоку уже сто лет был CoffeScript, но чутка помахав крыльями тот так и остался уделом редких "смотрите какую штуку я нашёл!".
Нормальные рейтинги, просто вам они не нужны.
А кому они нужны? Ну вот серьезно, кто сделал из этого рейтинга полезный для себя вывод? Хотел бы я поглядеть на такого человека.
Ну вот какой смысл в том, что Java с питоном скажем поменялись местами? А C почему-то вылез аж на первое? В то время как мы и так прекрасно знаем, какой из них для чего хорош, и где он плох.
* Python, C/C#/C++, Java, JS, PHP, GO — популярные
* Swift, Lua, Rust, Kotlin, TypeScript, R, 1C — неоднозначно
* Pascal/Delphi, Basic/VBA, Erlang, Fortran и многое другое — непопулярные.
Дальше можно выяснять, почему одни языки популярные, а другие нет, но не более того. С практической же точки зрения — подавляющее большинство изучаемых и легкодоступных для изучения ЯП относится первой категории (ну кроме паскаля), поэтому без работы никто не останется. Да и если вы реально мастер языка из последней группы, то вы тоже можете или устроиться по специальности (и не факт, что зп редкого спеца будет меньше), или без особого труда переучиться, или не переучиваясь пойти туда с понижением квалификации.
Не, ну а если бы выбрали скажем java разве что-то сильно изменилось бы? Ведь то, как язык зайдет личто тебе — от его рейтинга почти не зависит. А найдешь ли работу — тоже примерно одинаковые шансы для первых десяти.
Но с вами это обсуждать бесполезно, флуд ради флуда я не собираюсь разводить.
мой любимый пример это конечно посчитать число полей в произвольной структуре, ну только публичных понятное дело и не юнионов и не битовых полей
Поделитесь ссылкой?
ответов на вопросы «как сделать такую-то хитровывернутую штуку» они не даюта должны?
Перечитайте текст новости и слово «туториал» в частности.
Вы мне напоминаете персонажа рассказа «Профессия» Азимова, но не главного героя, а того, который проиграл соревнование, потому что был обучен не той версии инструмента.
Конечно, возвращаемый объект Child неконстантен, да и он вообще временный.
Но чтобы сказать про UB, надо ткнуть пальцев в стандарт с этим описанным UB. Но ни я ни ты этого сделать не можем. Просто никто не знает С++.
Но это не значит, что компилятор или язык виноват, это простая человеческая ошибка =)
PS. Я кстати, не уверен, что в QXmppTransferManager ошибку исправили.
Компилятор не ругается, потому что в оригинале было
Child getChild() const;
«Оптимизация» конечно оборжаться — сначала возвращаем дипкопию сложного Чайлда, чтобы потом вернуть из него стринг по ссылке =)Логично (и правильно) было бы сделать так
const Child& getChild() const { return m_child;}
Впрочем, даже простое (без ссылки)
const auto name = p.getChild().getName();
уже решало проблему.Не надо втыкать ссылки куда попало. Заготовка для опытов тут.
С появлением мув-семантики в С++14 ситуация еще более усложнилась, потому надо читать учебники, типа Скотта Мейерса. Там, кстати и про преждевременную оптимизацию есть, что не надо стесняться возвращать по значению.
Висячая ссылка на временный объект это все же сюрприз, но не UB, т.к. описана в Стандарте.
На работе использую С++ и Python, хобби — Rust.
C++ не гуглю совсем, если что подзабыл — перехожу на cppreference сразу.
По Rust — все сервисы (docs.rs, crates.io и т.д) в закладках. Очень редко гуглю что-то хитровывернутое.
И только Python, язык, который мне почти совсем не нравится и я его знаю плохо, требует постоянного гугления.
То есть я поднимаю рейтинг тому, кому хотел бы его опустить…
Согласен. Python — это язык с самой ярковыраженной stackoverflow driven development необходимостью. На это есть несколько причин, основные:
- Довольно дурацкая дока (особенно в библиотеках), постоянное отсутствие примеров
- Постоянные **kwargs, в которых даже читая source code библиотек не всегда понятно что происходит
- Каждый пишет как хочет, нет общих паттернов. Код DataScience и код Web Service и сопутствующие библиотеки отличаются по парадигмам и подходам, кроме того есть огромное количество разных покалений (вроде "как тут делать async до того как завезли async"), и все библиотеки на разных покалениях сидят.
В результате, единственный быстрый способ писать на Python — гуглить вопрос как есть и копипсатить со stackoverflow. Качество кода — соответствующее
Не так давно пробовал Rust, понравились его принципы безопасности, просмотрел кол-во вакансий в нашем городе, их 1 на весь Харьков и та для сеньера. Понятно что для бизнеса выбирают то что проверенно временем, но хотелось бы побольше вакансий для новых ЯП
Добавьте что ли Julia в опрос… Самый современный язык для математики, а в списке его нет....
а где Rust в вашем опросе?
Например, у нас в институте (сугубо наука) наиболее популярные инструменты — это фортран, матлаб и разные Си. При этом я даже не знаю, можно ли назвать тех, кто пишет и поддерживает эти программы, программистами. Так как основная задача почти у всех — это статьи, а программа — лишь инструмент, чтобы сделать конкретный расчет. Т.е. программа очень часто не является отчуждаемым «продуктом для пользователей». Это программирование или нет? Нужно ли его учитывать при составлении таких рейтингов, и как?
Упрощая — популярные, это не значит «полезные» или «крутые». Это скорее — «для учеников»
Ждал от статьи со словом хабратоп хоть какой статистки по хабру:
Популярность тегов, количество статей по языкам, привлекательность этих статей для читателя…
«Python позволяет написать рабочий прототип скрипта с помощью нескольких десятков строк кода, в отличие от других языков, где будет уже сотня-другая. Тем самым разработка на Python гораздо быстрее. А для многих компаний нужно быть первыми, чтобы не потеряться на рынке.»
Действительно, кому сейчас надо закладываться на архитектуру, продумывать слои, строить абстракции для связи между ними, так что бы это все не поехало через 3-4 года.
Проще продать и быстрее сляпать на коленке несколько десяток строк кода.
Потом, если взлетит — можно и абстракции и архитектуру и вот это все.
Действительно, кому сейчас надо закладываться на архитектуру, продумывать слои, строить абстракции для связи между ними, так что бы это все не поехало через 3-4 года.
Как показывает практика, с такой-то архитектурой, слоями и абстракциями, в большинстве случаев проект в кусок неподдерживаемого говнища превращается гораздо раньше, чем через 3-4 года.
На С пишется много чего.
Те же микроконтроллеры далеко не все на С++ программируются.
Ядро линукса по большей части на С писано.
Еще SQLite (да и многие известные СУБД) тоже на С.
Компиляторы, опять же.
Я не говорю что на нем вообще не пишут,
Но вы писали следующее: "Но я не видел проектов или разработчиков на нем"
я говорю что на других языках проектов намного больше
Возможно, хотя не уверен в этом, особенно если учесть, что далеко не все проекты публичны (особенно если это не очередной "здравствуймир", а что-то действительно серьезное).
Опять же, существующее положение вещей в видимом большинству мире выдвигает на первые позиции всякую веб-разработку и быструю разработку не программистами (соответственно, привет JS и питон). Но Это не отменяет "невидимую" часть, а именно массовую промышленную будничную (не стартапы всякие модные) разработку. Там, естественно, используется не только Си, но и его доля, как мне кажется на основании моих наблюдений, весьма велика.
Я сам, кстати, на Си давно ничего не писал, но разработчиков на сем языке, тем не менее, регулярно видел и вижу до сих пор.
Голосование на хабре подтверждает
Голосование в интернете показало, что 100% пользуются интернетом.
Впрочем, даже на хабре Си не оказался самым непопулярным языком.
да и кол-во вакансий тоже
Количество вакансий на Delphi исчезающе мало, но почему-то количество программистов, которые программируют на Delphi, и которых знаю я лично (причем не по работе), непропорционально велико относительно количества вакансий.
У тебя тогда просто нет базы, фундамента обучения.
Конечно, работы на чистом С не там много, но например я получил пару месяцев назад нормальный контракт. А вот стыковок с С-библиотеками много, и без знания С ты далеко не уедешь.
Это как говорить, что знать английский необязательно, т.к. доки переведены =)
Существенная часть фишек Си отсутствует в плюсах, например variable-length arrays
Знать Си безусловно полезно, но я бы не сказал, что для программиста на ЯВУ это столь необходимо.
Что такое ЯВУ, сейчас границы размываются (куда отнести С/С++ — спорят). Но вот тему на форуме, как вызвать CreateProcess() из VBA, я видел прямо сегодня.
Те же микроконтроллеры далеко не все на С++ программируются.
Потому что под них зачастую есть только компилятор C, и то кривой.
Ядро линукса по большей части на С писано.
Исключительно из-за упёртости Линуса.
Еще SQLite (да и многие известные СУБД) тоже на С.
А теперь вспомните, сколько им лет. Когда их начинали писать, C++ ещё и в помине не было.
Компиляторы, опять же.
О, а это какие, интересно? Я так навскидку могу только TCC вспомнить, но обычно не для разработки используют. GCC написан на смеси C и C++. Clang с самого начала написан на C++.
Потому что под них зачастую есть только компилятор C, и то кривой.А что такое кривой С-компилятор?
Собственно, от эмбедщиков слышно только про проблемы ограничения по ресурсам. Шаблонный С++ только проникает туда, но даже STL часто не влезает. И есть глобальная проблема с исключениями — с ними невозможны сильные оптимизации.
Потому что под них зачастую есть только компилятор C, и то кривой.
Не всегда кривой, но в любом случае это создает достаточно много рабочих мест для тех, кто пишет на С.
Исключительно из-за упёртости Линуса.
Скорее: "А теперь вспомните, сколько им лет".
А теперь вспомните, сколько им лет. Когда их начинали писать, C++ ещё и в помине не было.
Это не отменяет того факта, что для многих проектов на Си продолжается разработка, причем часто все на том же Си (наверное, чтобы не плодить языки, которые необходимо знать разработчикам).
GCC написан на смеси C и C++.
Т.е. Си там все-таки присутствует.
Но я не видел проектов или разработчиков на нем, даже когда дело касалось программ для микроконтроллеров.Практически вся телефония, начиная от Open Source-ных, Asterisk, FreeSwitch, OpenSIPS, Kamailio и прочее, заканчивая проприетарными вещами, когда sip-прокси или сервер должен общаться с ядром Linux или драйверами аппаратного оборудования для обработки голосового потока.
Самый популярный автомобиль — понимаю. Самый популярный движок сайта — тоже всё ясно, это исчислимая величина. А как может быть язык программирования быть самым популярным — не понимаю. Нужно уточнять, потому что иначе окажется, что:
- по вакансиям (с учётом того, что в вакансиях иногда требуют 2-3 языка) самым популярным наверняка будет Python — он нужен не только программистам, но и различным учёным и исследователям в качестве вспомогательного навыка автоматизации;
- по числу изучивших на курсах — ну, возможно, Java, её преподают много и часто;
- по доходам от продажи программного обеспечения — наверняка C++, на нём пишутся масштабные и дорогостоящие программные продукты, включая ОС;
- по числу тех, кто умеет хоть чуть-чуть — безусловно, Pascal, его знает чуть ли не 100% россиян, отучившихся в школе.
Так что «рейтинг самых популярных ЯП» — это всё равно что осмотр слона слепыми мудрецами. Измерили неизвестно что неизвестно как и получили соответствующий результат.
неужели не понятно, что «доля» Си берет половину от С++ и еще половину от С#?
dev.by/news/hackerrank-javascript-stal-samym-populyarnym-yazykom-programmirovaniya-java-na-vtorom-meste
techrocks.ru/2020/02/04/hackerrank-developer-skills-2020
Самые популярные языки программирования. Хабратоп 2020 года