Pull to refresh

Comments 151

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

Не ожидалось увидеть, что SQL и make - это языки. Если взять разные синтаксисы конфигов как обычных, так и yaml, то я бы мог утверждать, что знаю пару сотен :)

Стоило бы написать об этом в комментариях к оригиналу статьи, чтобы автор сделал выводы

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

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

А чем структурированный запрос к бд, в котором есть подпрограммы, рекурсия, вычисления (и это всё - фишки стандартного SQL, а не расширения конкретных СУБД), не является программой?

На это заголовок намекает, поэтому не стал даже читать.

Хотел бы похвалить за память... Лингвистом бы вы были...

Я никак не прокомментировал твое высказывание

Хотите программировать - программируйте, не хотите программировать - не программируйте. (Дж. Стетхем)

Код пиши - с фичами. А баги в коде - не пиши. (Дж. Стетхем)

Мое уважению автору, что он так и не стал учить питон

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

дружочек 30 языков "для галочки" это конечно круто, но вот насколько эффективно такое знание?

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

запомнить 30 языков, да еще и овладеть ими (так чтобы решить любую задачу) это нереально

кроме того фраза "Мой личный топ-10 языков на сегодняшний день: Swift, Go, C, JavaScript, C++, CMake, SQL, Java, C# и Scratch. Scratch " тоже о многом говорит, почему с++ не на первом месте? и почему джаваскрипт выше джава и с++???

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

У Вас явный heap overflow, пора начинать забывать - на русский памяти уже не хватает.

ничего страшного мне компилятор сам память выделяет а руский я пропустил через деструктор и переопределил с базовыми методами от б*длы чтобы объявить английский и финский^^

почему с++ не на первом месте?

А за что его любить? На нём же не только писать, но и читать неудобно.

ну смотря опять же как писать, если на нативном винформс то в принципе терпимо (это в визуалке), а так если что еще рад студио есть для с++

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

var iter2 = iter1.Where(x => x?.Length > 0);

Как обычно это делается на С++? Какой код я увижу в 90% проектов? (Можно два самых распространённых варианта, если нет одного стандартного).
(iter1 - итератор по коллекции ссылок на объекты со свойством Length)

Преимущество LINQ больше не в читаемости, а в том, что там есть оптимизации. Например, из всех команд выборок он формирует один запрос к БД

В С++ скорее всего будет просто цикл с наивным перебором элементов по условию. Так же можно и на шарпе написать. Но если очень хочется имено LINQ синтаксиса, можно использовать CLINQ. Или что-то свое сделать, уж лямбды-то в плюсах имеются

Сделать можно, но как это будет выглядеть? Не будет ли слишком длинно (или перегружено спец.символами, в которые нужно вглядываться)?

Не хочется именно LINQ. Хочется выразить свою идею кратко и "близко к тексту" (к описанию алгоритма на словах). С учётом того, что на практике кроме where обычно будет ещё orderBy, select и т.п.

дружочек

К кому вы обращаетесь? К переводчику статьи?

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

Аналогично. Совершенно не понятно что именно он там знает и на сколько глубоко понимает. Может всякую фигню на них всю жизнь пишет.

тоже о многом говорит, почему с++ не на первом месте? и почему джаваскрипт выше джава и с++???

А о чём, собственно, это говорит, кроме предпочтений автора? Я бы плюсы на первое место тоже не поставил, да и js мне нравится больше C++

Потому что это его личный топ?:)

Python е знает, или не использует, но для увеличения списка должен был указать. Странно..

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

Arduino это разве язык? Там же плюсы с оберткой над низкоуровневыми и регистровыми конструкциями, читай фрэймворк

а cmake? Это же тоже не яп, а система сборки.

Почему бы не упомянуть xml, html, css, yaml, ini, json и toml, или эти "языки" автор не использовал?

cmake полный по Тьюрингу. И да, там есть что учить.

Можно ли считать знание таблицы истинности И-НЕ эквивалентным знанию иного Тьюринг-полного языка?

Этот трэд можно продолжать до тех пор, пока сам трэд не станет полным по Тьюрингу, но есть ли в этом какой-либо практический смысл?)

Для обучения какого-нибудь чат-бота – имеет :)

У cmake есть применение в индустрии. И как я уже говорил - там есть что учить.

Шикарная штука. Возможно, сподвигнет меня таки попробовать поиграть в майнкрафт)

В CMake есть переменные, есть условия, есть циклы, есть типы данных, есть математические операции, есть подпрограммы, и т.д. и т.п. Я терпеть не могу встроенный язык CMake, и мечтаю о том чтобы его заменили на Lua, декларативный вариант с JSON или обрубком синтаксиса инициализации переменных C++ по готовым типам, объявленных в хедерах сответствующей версии (чтобы его мог обрабатывать линтер любой современной IDE С++). Но блин, по какому конкретно признаку встроенный в CMake язык не является языком программирования, и чем он является тогда?

Полнота по Тьюрингу не делает что-либо языком программирования. А язык программирования не обязан быть полным по Тьюрингу.

А cmake - это действительно система сборки (и да, там есть что учить). А вот ЯП, на котором описывают процесс сборки в cmake, пес его знает, как называется. Может быть, тоже cmake. А может, как-то иначе или вообще не имеет собственного названия. Если кто точно знает, проясните, пожалуйста (сам с этим зверем пока плотно не сталкивался, а потому не интересовался такими подробностями).

Регулярки - тоже полный по Тьюрингу язык )

а cmake? Это же тоже не яп, а система сборки.

вроде бы уже есть "отладчик" для cmake-скриптов :)

И что тут такого необыкновенного?

Думаю, для этого гражданина настало время изучить 1C ))

Ни одного функционального языка, как я понимаю. Нафиг так жить?)

Вот полный список этих языков

Хорошая коллекция. После прочтения статьи охотно верю, что Вы знаете/знали их все на приличном уровне.

После С всё кажется знакомым

Попробуйте Haskell

первый серверный код был написан на VB6 с Microsoft ASP на IIS

А как же WebClass? По сравнению с ними даже ASP.NET WebForms были шагом назад.

После хаскеля уже ничто не радует.

APL/J/K какой-нибудь, лучше, наверное, классический APL, с ним жизнь заиграет новыми буквами.

Попробуйте лисп или агду

Попробуйте Haskell

Можно ещё Refal ) Вот где я голову сломал )))

Markov (цепи Маркова) ещё отличная вещь, только сегодня прочитал про него классную статью. Сильный, красивый. Сложный. И анимашки в статье классные!

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

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

Расскажите это рекрутёрам

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

Просто технологии приходят и уходят. За несколько десятков лет всякое перепробуешь.

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

Всякий, кто игрался с вебом с ранней эпохи, - наверняка хапнул перл, пхп, яву, асп и аспнет, вбскрипт и яваскрипт.

Шеллы операционок - бат, повер, ш/баш/зш, wsh с его бейсиком и яваскриптом, перл и питон.

Хотите писать кроссплатформенный компилируемый код - познакомитесь с C, C++, Obj-C, Obj-C++ - вжух, и уже 4 языка, а там рядом пасётся микрософт с дотнетом - MC++ и C++CLI.

Занимаетесь прикладной математикой - будет вам и фортран, и маткад/матлаб/лабвью/жулиа/р, и питон естественно. Вряд ли на одном фортране или на одном матлабе всю жизнь просидите же.

Любите функциональщину (или просто с автокадом возитесь) - соберёте комплект лиспов, как минимум. А там и MLы, и хаскелл рядом пасётся. Да и прологи, а где пролог, там и эрланг.

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

Ну раз уж вспомнил Никласа Вирта: все турбо паскали и дельфи за диалекты одного языка считать, или за разные? (Если разные, то С++ с 93 по 23? А фортраны?)

Ах да! Ассемблеры! Каждый новый процессор - новый ассемблер. Плохо что ли?

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

Просто вопрос: и на хрена?

3 сегодня более чем.

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

Когда программируешь не одно десятилетие, вопрос «нафига» не стоит. Языки появляются и исчезают. Когда-то актуальные Перл и Делфи почти вымерли, ПХП потихоньку помирает. Возможно Джава уже напряглась из-за Котлина и Си-шарпа. Ты просто живёшь, а то, на чём программировал — нет, поэтому учишь новое.

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

Вот не надо PHP трогать, он ещё нас всех переживёт )

Я не хейчу ПХП просто «потому что», сам программирую на нём ещё с третьей версии и для интереса даже посмотрел PHP/Fi. Но его популярность неуклонно снижается, такова статистика. А так нас, может, и КОБОЛ переживёт, кто знает.

Был у меня молодой коллега, который рассказывал, что ему кроме PHP ничего не нужно. Устроился на первую работу и посадили его там делать шаблоны на XSLT ! Кто не в курсе - это язык, придуманный то ли инопланетянами, то ли извращенцами.

Вот же молодёжь пошла, XSLT не видели, SOAP не пробовали, WSDL файлов не читали и на Smarty не верстали. Да знаете ли вы что тако DOM и как использовать алерты для отладки js? верстали ли вы таблицами? Вскакивали ли вы ночью с постели потому что вам приснилось что вышла новая версия ExtJs и как всегда без документации, и вам снова надо все переделывать, а никто не знает как оно теперь работает? Юзали ли вы ифреймы чтобы постучатся на сервер и радовались ли AJAX? я что вы почувствовали когда узнали о JQuery?! ждали ли когда наконец то умрёт IE6? а после снова ждали. и снова.

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

XQuery – наше все было! Мы на нем когда-то даже гуй делали и веб и десктоп с сервером и бд!
Вот на этой платформе https://exist-db.org/

Уж XQuery куда поприятнее богомерзкого XSLT.

SOAP/WSDL живее всех живых.

громоздкий, неудобный, не гибкий, тяжёлый.

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

SOAP наверное самое нелепое детище этого подхода. а давайте сделаем RPC и в качестве контейнеров используем XML, и сделаем специальный формат файлов для описания контейнеров, функций и взаимодействий. И тоже на XML. и ещё внутренние типы будем создавать, и их описывать. а чтобы стало совсем универсально и переиспользование, позволим этим описаниям включать и ссылать ся на другие описания в интернете. и чтобы совсем плохо было засунем в эти WSDL столько сложностей что новичку чисто чтобы понять структуру сложного запроса придётся разбиратся неделю. ну и потом ещё версий протокола наделаем чтобы совместимость совсем уничтожить. место SOAP в 1980-х, максимум в 1990-х, но почему то в консервативных организациях типа банков и гос учреждений он ещё местами жив.

в SOAP нет ни одного преимущества перед REST (с json), и куча недостатков.

Так а зачем в него глазами-то смотреть? ) Ну ходит что-то там в канале и прекрасно. Куча бинарных RPC есть, мы ж туда не смотрим (хотя пришлось как-то возиться с MAPI на уровне байт, вот это куда хуже SOAP).

в SOAP нет ни одного преимущества перед REST (с json)

Очень странное утверждение. Одно преимущество у нас с вами в переписке всплыло — это WSDL. Несмотря на то, что в связке rest+json придуманы аналоги, единого стандарта нет и случаев использования я знаю только парочку.

Второе — SOAP бывает не только поверх HTTP/HTTPS. Можно хоть почтой слать. Я видел решение, где SOAP пересылается через сервер очередей.

в SOAP нет ни одного преимущества перед REST (с json), и куча недостатков.

А вот неправда ваша. В SOAP есть описание протокола, и контроль типов. Возможность генерировать описание из кода клиента или сервера, или наоборот, код клиента или сервера из описания. Ничего этого нет в REST, и для этого пришлось придумывать новые, и в общем-то нестандартизованные нашлёпки вроде сваггера.

Да, на транспортном уровне SOAP намного более громоздкий, но благодаря вышеупомянутому вам с этим вообще не нужно было связываться, генерация и обработка пакетов там ведь были автоматизированы.

ёжики плакали, кололись, но продолжали генерировать код.

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

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

и так же поступит тот кто сгенерит WSDL по серверу.

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

и встанут они на дорогу в ад под названием "что за мерзкая жижа была вместо мозга у тех кто проектировать это API?!" и весело пойдут по ней, год за годом приближая армагедон.

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

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

потому что его тяжело читать, легко переусложнить, мало кто пытается разобраться или заложить прочности в начале, только добавляют, ещё больше усложняя, и все, блин, генерируют код. WSDL по серверу, клиента по WSDL, сервер по WSDL, и заново по кругу. и никто в душе не одупляет зачем нужны вот эти параметры и объекты, зато типы описаны, ссылки на подтипы висят на сервера которые уже давно не работают, чтобы сделать первый запрос нужна неделя изучения всех файлов (включая по ссылкам, которых нет), а когда созваниваться с "той стороной" встречаешь непонимание, они знают свою систему, знают сервер, но уже формат API они не знают, зачем, вот же wsdl есть. который никто не читал и не может прочитать. спрашиваешь кто проектировал и выясняется что по сути никто, джун написал первые пару функций и сгенерил код, а потом лет 10 добавляли по ситуации в общее api то что нужно одному клиенту из 100. а сейчас даже добавлять не будут потом у что генератор уже этот комок ссылок не тянет. почему изначально не спроектировали нормально? а у них некому, генераторы же есть, никто API никогда не проектировал. и вообще мы в банке работаем, у нас тут секьюрность, протоколы, бумажки, отчеты, некогда нам.

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

и встанут они на дорогу в ад под названием "что за мерзкая жижа была вместо мозга у тех кто проектировать это API?!

А существует какая-то другая дорога, где можно потреблять API каким-то иным способом, отличным от следования его спецификации? И если есть, то она лучше, что ли? О_о

так ведь. которым приходится адаптироваться при изменении формата, да?

Именно так. Абсолютно всем, всегда и во все времена, независимо от того, SOAP там, REST или GraphQL. Именно поэтому все эти гугловые/фейсбучие апихи имеют в пути v14, v23 и так далее. Потому что они меняются, и чтобы не ломать совместимость, новые версии поднимаются на новых урлах. Этот же рецепт прекрасно работал и в соапе.

потому что его тяжело читать

Простите, но SOAP - это обычный RPC-протокол, он читается настолько же "тяжело", насколько обычное описание интерфейса в вашем любимом языке программирования.

генерация расслабляет

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

А существует какая-то другая дорога, где можно потреблять API каким-то
иным способом, отличным от следования его спецификации? И если есть, то
она лучше, что ли? О_о

Есть. Ибо речь о процессе проектирования АПИ, а не "следовании спецификации". Не стоит передергивать. Проектировать АПИ надо вдумчиво, с пониманием дальнейших путей его развития, а не генерировать по первому попавшемуся описанию. И структуры объектов и методы обработки RPC могут оказаться "иными", если подумать. Тут соглашусь с Вашим оппонентом, ибо тоже "насмотрелся" на программистов-генераторщиков.

Именно так. Абсолютно всем, всегда и во все времена, независимо от того,
SOAP там, REST или GraphQL. Именно поэтому все эти гугловые/фейсбучие
апихи имеют в пути v14, v23 и так далее. Потому что они меняются, и
чтобы не ломать совместимость, новые версии поднимаются на новых урлах.
Этот же рецепт прекрасно работал и в соапе.

Нет. Опять же "не всегда". Грамотное спроектированное АПИ вполне способно расширяться не ломая обратную совместимость и без разного рода "версионности" в урл. Так бывает.

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

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

Помню лет 15-20 назад, в одном небольшом проекте я даже XSLT использовал. php скрипты отдавали на фронт xml на который накладывался XSLT скрипт и в результате на выходе получали готовый html. Своеобразно все это конечно, но работало. ))

UFO just landed and posted this here

Автор в одном абзаце пишет про ASP (где программировали на VBScript и серверном диалекте JavaScript) и так же пишет, что JavaScript в те времена работал только в браузере ?

Я ожидал тебя увидеть в каментах. На скольких языках ты что-либо писал?

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

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

ассоциации

Зря :) т.к. задачи которые решают языки очень разные, то не удивительно, что их много.

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

К вам вопросов нет, но один есть. 30 уникальных языков или похожих?

Arduino, Scratch... это фуллстек девелопер в школьном кружке очумелых ручек, что ли?

Если я напишу Hello World на 50 языках программирования, значит ли это, что я могу программировать на 50 языках?

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

Если я помог студенту разобраться с его лабораторной работой на Delphi, то это не значит, что я могу программировать на Delphi.

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

Если я напишу Hello World на 50 языках программирования, значит ли это, что я могу программировать на 50 языках?

Нет, но если вы пару десятилетий поработаете программистом, у вас и реальной практики хватит на пару десятков языков. Обычный современный фуллстек юзает, допустим, хытымыл, цээсэс, жаваскрипт, сишарп для бэкэнда, SQL для работы с СУБД, пайтон для скриптяшек, и ещё в пауэршелл умеет. Вот их уже семеро в один момент времени. А десять лет назад он был на каком-то другом стеке, и там у него был свой зоопарк.

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

Haskell не познал – мира не видал!

После С всё кажется знакомым

Человек умудрился пропустить все ML подобные языки (SML, OCaml, Haskell, F#, Idris), все LISP подобные языки (Common LISP, Clojure, Racket) где он был эти 30 лет?

Статья - полный сумбур, что там учить-то в CMake/PWSH, write-only билд скрипты?

Автор выучил разные диалекты SQL (T-SQL, PL/SQL), но при этом умудрился выучить Assembly (хотя там диалектов больше чем в SQL и они все разные)

Мог бы в список внести ещё HTML, CSS, XML и JSON с таким подходом :D

Ну, языки ассемблера кучкуются в группы, CISC/RISC/VLIW, и всякая экзотика вроде OISC. Языки из разных групп кажутся очень разными, но в пределах одной группы похожи. Бывают еще черты вроде регистровых окон (SPARC, E2K), выполнение пары инструкций за раз (Hitachi SH4), delay slot (MIPS, OpenRISC), несколько аппаратных стеков (E2K, IA64), регистровый стек (сопроцессор x87), стек машины (Java байткод), абстрактное синтаксическое дерево в стиле Lisp (WASM) и т.д.

Именно! Меня удивило что автор пишет о разных диалектах SQL (осозновая что они разные), но вставил Assembly без указания конкретного, что лично для меня показывает что человек написал бездумно и ни одного конкретного Assembly он не выучил.

но вставил Assembly без указания конкретного, что лично для меня показывает

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

Ну может быть, под E2K разрабатывал... хотя нет, постойте.

Из всего мной перечисленного я писал только для 16/32/64-бит x86 и 32-бит ARM (aarch64 настолько переделали, что можно считать отдельным языком). Остальное только читал. Для e2k только инлайн ассемблер вставку написал небольшую, на VLIW языках вручную мало пишут, это слишком тяжело и долго написать на них код лучше чем это сделает компилятор, пишут для вещей что компилятор сделать не может, вроде трамплинов для FFI.

Для Hexagon (тоже VLIW) лишь несколько строк написал, когда надо было функцию на ассемблере из библиотеки переделать под другой API, там была обработка непрерывного участка (1D), а мне надо было 2D (ширина, высота, страйд). Зато читал ассемблерные листинги, чтобы понять в каких местах регистр аллокатор не справляется и начинает сохранять один регистр на стек и загружать другой (spilling), тогда производительность сильно падает, надо код переписывать в более лёгкий для компилятора вид.

Это вас направление сильно специфическое. Чувак-то был обычным десктопным разработчиком.

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

Человек умудрился пропустить все ML подобные языки (SML, OCaml, Haskell, F#, Idris), все LISP подобные языки (Common LISP, Clojure, Racket) где он был эти 30 лет?

Я их тоже за свои 25 лет полностью пропустил. Ну, названия знаю, но пробовать даже не любопытно было. Очень несложно пропустить то, что не интересно :)

Кстати, а не знаете, что-нибудь LISP-подобное ещё живо вообще? Лет 10 назад была мысль покопаться с Clojure, но было не до того. И вот не знаю, он ещё жив (ну или что-нибудь LISP-подобное), или вообще забыто. А LISP в университете был любопытным :)

Кложа, вроде, живее всех живых!

Racket, вроде, тоже хорошо себя чувствует. Но лично мне из диалектов больше всего CL нравится, несмотря на меньшую популярность

Мне было интересно, я пытался ковыряться и с OCaml, и с Haskell, и с Common Lisp, но если

под изучением я подразумеваю, что написал на них достаточное количество кода

то вот я не знаю, как на вышеозначенном написать достаточно кода. Работать на них устроиться шансов примерно ноль. Не совсем, конечно, строгий ноль, но величина малоотличимая он нуля. Пытаться контрибутить в какой-то немногочисленный опенсорс, не потому, что интересен проект, а потому, что язык учишь? Так нафиг пошлют, криворукого, и правильно сделают. Что-то мелкое для себя писать? Так для мало-мальски практического применения нужны развесистые библиотеки, а ихтамнет. Остаётся что, бесконечно ковырять простенькие примеры на задрочку алгоритмов?

Работать на них устроиться шансов примерно ноль.

Ну нет. Спрос на хачкелистов (условных) всё ещё сильно выше предложения

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

  • Fort - стековый язык, прокачивает мозг дай боже

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

  • Basic - мой первый язык программирования, на котором я год писал программы на бумаге (компы тогда были редкость). Вредный язык из-за своих Goto, которыми мои программы были просто переполнены

  • Arduino - забыл как называется у них язык. Слишком абстрактная и урезанная вещь, чтобы написать что-то стоящее надо вставлять си

  • Verilog - забавен тем, что я не мог даже представить, что схему можно запрограммировать. Выучил и магия пропала

  • Js - клевый тем, что имхо на нем много кто программирует никогда не изучая его, я, например

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

на которых я делал реальные задачи

Стековый язык для старых микрокалькуляторов

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

ПОЛИЗ (обратная польская запись) что-ли? Не знаю что в этом забавного или необычного. Хотя что делали задачи на этом, при этом только из старых журналов помните и не программировали - это очень забавно, да.

Да, "обратная польская запись" хорошо помню это выражение. Ну, мне показалось забавным на фоне современных языков

Если у вас Fort первым в списке, то вы это должны были использовать. ПОЛИЗ не является чем-то устаревшим, а очень даже используется, просто под капотом, не явно. Например Java байткод - как стековый язык использует ПОЛИЗ.

Ну ок. Кстати, помню, не было у меня интерпретатора форт, была только книжка, я написал на асме 86 интерпретатор, под дос, это были 90-е. И после чего написал пару графических программ. Поначалу было очень сложно, но мозг такая штука, быстро адаптируется. По итогу на форте я написал 3д программулину, которая проволочной графикой вращала в разных направлениях примитивные объекты. Для себя отметил, что потратив на написание интерпретатора 2 дня + один день на эту прогу это было было в несколько раз быстрее если б я прогу писал чисто на асме

Только Forth пишется не так, как в Fort-ran-е... :-)

Pawn - на нем раньше писали модули для каунтер-страйк 1.6. очень кастрированный си.

Есть ещё SourcePawn, который служит для написания плагинов под SouceMod, который в свою очередь используется для игр на движке Source (CS:S, CS:GO, HLDM, NMRiH, Insurgency и многих других). Он вроде синтаксисом ближе к плюсам.

Прикольно. Я думал, что этот pawn благополучно выкинули. Я, кстати, на нем чуть ли не проект написал. Однако ввиду КС го ок уже стал неактуальным. А идея была такая: играть в КС под деньги. Тебя убивают - ты платишь цент. Ты убиваешь - тебе платят. Тимкилы ничего не дают, но после второго кик. Статистика прямо во время игры. Данные в бд и все такое. В общем, этот pawn я в страшном сне вспоминаю как там всего от си не хватало

Однако ввиду КС го ок уже стал неактуальным.

Почему же? При желании можно запустить сервер CS:GO и клиент в стиме пока ещё доступен вроде.
Разве что купленное барахло перекочевало в CS2.
Ну и кроме CS:GO ещё много серверов разных игр всё ещё SM используют.

Можно просто заглянуть на АМ или HLmod и посмотреть темы.

Я набирал с мобилки и автоисправление зафейлило мысль. Кс 1.6 стал неактуальным. Ну настолько чтоб туда пошли денежные клиенты, мой мод был рассчитан как раз на них

Сейчас возможно в AMXmod с этим получше (никогда на нём ничего не писал, но кое-какой код на глаза попадался).
А на SourceMod такое написать не проблема.

Я вон плагин запилил в 2018-м, чтобы чужой не допиливать постоянно (проще было с нуля написать и я написал). И все эти 5 лет периодически его изменял (обычно фичи какие-нибудь добавлял, которые просили или самому хотелось, пока играл в CS:S на сервере с моим плагином). На данный момент в плагине 2к строк и исходник 61кБ весит. В версии 1.0.0 было 610 строк и 20кБ. С 16 консольных переменных разрослось всё до 46 (и некоторые из них не создаются при запуске в CS:S v34).
Хотя больше интересного в комментах на HLmod'е почитать можно, чем на AM, куда я ссылку дал.

Забавный плагин. Правда смысла не понял, ну раз играют или играли, значит смысл был

Там ещё многое от настроек зависит: можно выставить всякие ограничения на количество поднятых, на доступное время поднятия после смерти, сколько хп отдаёт игрок за поднятие или наоборот получает.
Обычно на картах de_* играл. При небольшом количестве игроков на сервере раунд может в разы длиннее сделать.

А где HTML, CSS, XML, JSON, EXCEL, WORD, и владение компьютером Windows на уровне уверенного пользователя?

Не современный C, а классический C без каких-либо строковых библиотек и других полезных вещей, присутствующих сегодня в C и C++

Щито?! В начале 2000-ых С без строковых библиотек? Которые были уже в ANSI C аж 1983 года???

Хм... На скольки ж я языках программировал?

Ну бейсик, конечно. С этого все начиналось. Затем был ассемблер Z80 и ассемблер PDP-11. Считаем их разными языками, потому что реально разные. Потом к ним добавился ассемблер PIC-контроллеров и i51, но это уж потом.

Далее -- МК-61, к которому вскоре добавился язык Д3-28 (у мамы на работе был). Пожалуй, это тоже к ассемблерам, хоть и довольно высокоуровневым. Ах да, был еще фокал. Вот язык "Искры-1256" прошел мимо меня)) Хотя эта самая "Искра" стояла у мамы на работе тоже. Но никогда не включалась при мне. Паскаль и Фортран были потроганы, но они так мучительно долго компилировались на УКНЦ, когда программа становилась хоть немного сложной, что я не продвинулся дальше простейших вещей, хотя что то, что то мне показалось совершенно прозрачным и понятным. Также пощупал FORTH и язык "решателя" Eureka. На форте даже пытался написать что-то полезное, но мозги заплелись раньше, чем удалось достичь чего-то.

Дальше был универ. Там, конечно же, паскаль по программе и си вне программы. Паскаль казался деревянным и дубовым, а си нравился. Потом влез в линукс, а там, конечно, bash. На паскале писал в основном учебные программы, а на си -- написал программу для обработки порошковых дифрактограмм, синтезатор речи из текста, "самописец" для самодельного АЦП (работавшего по принципу "преобразователь напряжение-частота + частотомер), довольно навороченную программу для построения графиков из файлов с данными и много по мелочи. Потом приобщился к Delphi -- считаем его отдельным языком, как си и плюсы. Освоение плюсов, к слову, у меня отложилось до появления Arduino:)))

Ну а потом программирование у меня стало постольку-поскольку. Что-то нужно слепить или переделать готовое -- берется и лепится. При этом языки были разные. Perl, Tcl/Tk, змеюка (в смысле, Python), Scheme, опять же бейсик (была такая машина HP-9000, почти ЭАЛ из "Одиссеи", у нее оперативная память была на ЦМД). Даже REXX пришлось однажды ковырять, потому как была к одному прибору в лаборатории машина PS/2 с полуосью. Конечно же, пришлось всерьез учить Matlab. Яваскрипт и PHP тоже не прошли мимо меня, так как нельзя ж было не слепить своего хомяка.

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

Итого: 24 языка. Это если ассемблеры и символьные языки считать каждый в отдельности. Что из этого помню, чтобы прямо вот взять и писать? Ну, кроме упомянутых трех языков -- пожалуй, "классический" (с номерами строк, GOTO и GOSUB) бейсик и "классический" же паскаль. Ну и баш-скрипт. Ну и калькуляторный язык МК-61 (а вот Д3-28 даже, возможно, не вспомню, как на нем посчитать два плюс два).

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

Ассемблеры бывают разные. В 1991-м еще люди помнили слова PDP, VAX. Некоторые даже писали на Алголе, и Фортране. Пролог забыт.

И если ПауэрШелл - язык, то тогда и PC/MS - DOC`ы надо вспоминать. Как раз на 90-е было начало бума сошествия 86-х.

А что, PowerShell не язык что ли? А что тогда?

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

Калькуляторы: МК-61

Ассемблеры: ЕС ЭВМ, PDP-11, x86

Языки управления и командных оболочек: ЯУЗ, bat (язык командной оболочки dos и windows), bash.

Языки запросов и все такое: пролог, SQL (пяток диалектов, наверное), qmake.

Языки высокого уровня: fortran, basic, ЯМБ, pascal, c, delphi, visual basic из MS office, c++, Cache Object Scrypt (сильно расширенный MUMPS, баловался с бесплатной версией СУБД Caché), python.

Приходилось сталкиваться и с другими языками: cobol, matlab, skylab, eureka, lisp, pl/1, forth, ада, dbase, cmake, lua (что-то точно упустил, ибо некоторых названий всякой экзотической ереси просто не помню), но то были либо точечные правки в чужих программах, либо только одна написанная проорамма, а потому незачет.

В реальности могу сейчас свободно писать только на sql, delphi, c, c++, bat и bash. Остальное придется сначала хотя бы немного, но вспоминать.

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

К счастью в реальной жизни будешь веслать где скажут и не будет времени терзать себя вопросами о лучшем в мире языке/фреймворке/IDE и прочем. То что в статье это зеленая молодость. А свои пет проекты и опенсорс пили хоть с малины в vim, никто тебе ничего не скажет. Не понятно к чему этот флёр романтизма в статьях о разработке, обычная работа, более всего сходная с работой на заводе, где наши родители повально сидели.

"ощущение себя глупцом" - с того начинается мой рабочий день и заканчивается. Становится легче, когда осознаешь, что вокруг тебя такие же люди :)

А Step5 считается ЯП? Учил лет 30 назад

Тот самый момент, когда на 30 ЯП написал Hello world.

Тоже за 20+ лет работы программистом. Делал коммерческие проекты C++, VB6, VB.NET. C# Java (android) PHP, Python. (SQL стор процедуры даже не в счет). И тут даже гордиться нечем. Обычное дело для программиста работающего над разными проектами, в разных фирмах.

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

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

Я думаю лучше выучить 1 язык программирования и постоянно повышать свой скилл в этом направлении

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

Лев Николаевич Толстой был известным полиглотом. Он владел 13 языками. В возрасте 80 лет он стал учить китайский. Но язык ему не дался. "То ли китайский язык слишком сложный, то ли я для него слишком стар" -- разочарованно промолвил Лев Толстой. (где хаскель?)

P.S. Знать и владеть -- разные вещи.

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

Утверждать, что знаешь какой-то язык можно лишь после 5-6 лет опыта реальной работы.

Но когда увидел в списке Arduino (это вообще не язык, а технология для микроконтрллеров), а также 3 варианта SQL, всё стало ясно.

почему он должен знать все эти языки?

вот к примеру, я писал на си лет 7 ежедневно, последний раз писал лет 8 назад, я знаю Си, нет не знаю, начну (не начну) писать вспомню (узнаю) но возврат через Х лет к определенному языку требует ресурсов, проверено.

Так ведь автор статьи сам утверждает, что "знает" 30 языков.

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

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

про диалекты pl-sql, t-sql не согласен они таки отличаются и нужно некоторое время чтобы перейти с pl на т, к счастью всë меньше пишут хранимок и и прочего трудно-сопровождаемого кода в бд.

таки Ардуино С это язык, наверное больше диалект с++ чем си.

Все, что написано в скетче Ардуино это обычный C++ с подключёнными заголовками, которые обозначают функции микро контроллера. Ардуино просто вызывает эти функции в нужном порядке и умеет реагировать на нужные функции нужным способом. Никакого уникального языка в этом смысле нет. Поправьте, если что-то изменилось за последнее время.

У меня больше вопрос не к автору статьи, еще и не такое писали, а к ребятам посчитавшим что она заслуживает перевода. Есть ли в beeline cloud разработчик освоивший не 30 языков а 5 например? Может лучше его попросите написать годную статью, рассказать об опыта, и тд?

Sign up to leave a comment.