Автор: daner
Вы путаете совершенно разные вещи между собой. Да есть языки которые разрабатывались, под конкретную парадигму программирования. Как пример: С для процедуральной, С++/Smalltalk/Java для ООП, Prolog для Логического, Haskel для функционального и т.д.
Но на сегодня все уже давно поняли, что нет парадигмы панацеи от всего на свете. Поэтому современные языки поддерживают несколько парадигм. И это нормально. Конкретный метод и стандарты, каждая компания (группа программистов) может определить сама и изменить в будущем, если окажется не верной. Ну или просто, разные задачи решать в разной парадигме, более подходящей под задачу.
|
|
Когда 2-5 парадигм поддерживается языком, то это одно, а когда ВСЕ ВОЗМОЖНЫЕ - это уже "не язык", а "пучок диалектов". Сдать экзамены на знание языка становится почти не реально.
Автор: daner Любой формализованный язык не перестанет быть "СТАНДАРТЫМ протоколом общения между программистом и компьютером", даже если его синтаксис ужасен.
|
|
туда-же. Польский и Украинский похожи на 50-60% Русский и украинский на 20-30%. Но зная один язык ты не сможешь СВОБОДНО ЧИТАТЬ другой язык без дополнительного обучения!
В JS есть классический метод записи и "функциональный". Даже это уже взрывает мозг когда надо БЫСТРО переключиться чтобы прочитать чужой код. Я предпочитаю "обычный" и чужой код предпочитаю переписывать в своих программах для упрощения чтения.
asdf(function(res){
console.log(res)
})
или
asdf(res => console.log)
А если таких вариантов "из коробки" уже больше 10 ибо "все может С++". Да и еще перед этим поработали "модификаторы языка" заменив некоторые операторы... Читабельность ЧУЖОГО кода падает на ПОРЯДКИ!
Автор: daner Очень смешно читать о жалобах на перегрузку операторов в С++, от человека, который считает что
var a = 1; var b = 2; a+b b = "2" a+b
это нормально.
Вообще не припомню, что бы это хоть когда-то создавало проблемы. Ты просто знаешь, что операторы, как и любые функции, могут быть перегруженны. и все.
|
|
В JS нельзя перегружать "+" или /*-!^. В Объектах можно задать toString(), но
var a = {asdf: 1}
var b = {zxcv: 123}
a+b = {asdf: 124}
сделать нельзя!
Ибо... Количество ошибок у НОВИЧКОВ и при чтении ЧУЖОГО кода будет много! И в отличии от С++ эти изменения "наложатся" на всю JS, а в трансляторе это вызовет лишние "подковерные игры" и тормоза. А учитывая "безтиповость" это наложит еще дополнительные проблемы.
Итог
Перегружать операторы - нельзя
Перегружать переменные, типы, и КОД функций - можно.
Автор: daner
я читал про потоки, которые потоки. "https://en.wikipedia.org/wiki/Thread_(computing)" -> Threads в JS они реализованы через класс Worker
|
|
В браузере немного сложнее. Там по сути из первого потока запускается "программа во втором потоке из ОТДЕЛЬНОГО файла-модуля" и между ними проложен двухсторонний обмен сообщениями.
...Это в JS внедрили только лет 5 назад! Это еще было сделано "на отвали". Думаю позднее пересмотрят стандарт!
Автор: daner Ну мне не надо про прототипирование рассказывать. Я большую часть времени именно этим из занимаюсь. И как в реальности прототипы уходят в продажу и живут там лет по 5-10, тоже знают. Именно поэтому, даже прототипы должны быть написаны солидно и на уровне продакшен.
|
|
А в чем тогда разница между прототипом и продакшном???
Прототип делают из "г..на и палок", скручивают это изолентой(которая уверенно продержится неделю и не уверено 1-2 месяца) и показывают клиенту "смотри - в принципе основу сделали - будем теперь качественно делать заводскими методами? или вам другой результат нужен?"
Скорость изготовления подобного прототипа на порядКИ быстрее чем у релиза! Отладка тоже!
Например для "подгонки" параметров я часто в коде пишу
a=200
a=500
a=250
и просто ПЕРЕставляю их местами чтобы в конце была "текущая" версия.
это получается быстрее "по КЛАВИШАМ" (или "драга мышкой выделенного")
Экономлю секунды...
Никаких даже "укрыть в комментарии //". "Читается" быстрее (ибо подкрашено правильно).
Потом (если есть время) идет "рефакторинг кода", убираются "лишние версии", в комменты (для упрощения "хода мысли при разработке/правке") или полностью (как гарантированно не нужные)
Автор: daner Мы по разному понимаем "живой язык". Для меня живой язык, это в первую очередь, язык который продолжает поддерживаться и развиваться. А не просто, кто-то еще помнит его синтаксис. Если не ошибаюсь, в лингвистики так же относятся и к естественным языкам (но я не лингвист). Именно по этому, Дельфи мёртв, а С++ жив.
|
|
Насколько я знаю, компания Делфи еще жива и продает свои продукты. А значит и вносит МЕЛКИЕ дополнения в следующие версии... Это значит что язык "мертвый"???
Делфи имеет бесплатную версию - Лазарус (написан фанатами в опенсорсе) и мееедленно но тоже развивается! В каком месте он "умрет"? Я пол года назад на нем программу подправил из тех которыми АКТИВНО пользуюсь (простейший транслятор выполняющий скрытно консольные команды по сигналам от игровой мышки)!
Язык в лингвистике мертвый, лишь когда "больше нет носителей". Даже если носитель ОДИН и способен ОБУЧИТЬ ему другого - он еще "не совсем мертвый")))
С программерскими языками все еще сложнее ибо есть УЧЕБНИКИ! Если мне надо "поддержать проект на фортране загруженном с флопи-диска", ибо иначе ядерная ракета в США может "отключить охлаждение" - я могу "вернуть к жизни" язык добавив ему "живого носителя". )) С "голосовыми" языками это сложнее. )))
Автор: daner Причем тут монополия? Тот же JS монополист, просто потому что в браузерах решили не разводить зоопарк, который сделает все браузеры невероятно раздутыми. Иначе, я бы посмотрел бы на свободную конкуренцию python vs javascript. И совсем не уверен, в том, кто бы взял вверх.
|
|
Уже БЫЛ зоопарк! И JS - победил!
В браузере изначально была даже поддержка Java-программ! Мой первый браузерный чат (которым я активно пользовался, изучая "10 пальцев клавиатуры") был на нем. ДИКАЯ скорость по сравнению с JS того времени. Можно было подключать поддержку и Бейсика. И даже на делфи можно было "добавлять внешние модули".
Конкуренцию питон vs JS мы можем смотреть на Ноде! Пока питон держится лишь за счет мощных фреймворков, которые были написаны ЗАДОЛГО до Ноды.
Автор: daner Вы в каком-то не реальном мире живете. Так уже лет 10, а то и 20 не работает. Это как "клич в толпу" - "мне нужен новый небоскрёб". Как думаете, каким ЛЕГО конструктором, для этого воспользуются "сегодняшние школьники"?
У нас практически нет случайных людей. Либо это те, кто изучал роботику в вузе, либо конкретно сильные с++ программисты (которых берут именно для этого). И учитывая кол-во всяких инфраструктурных решений на с++ и питоне, в сфере контроля и робототехники, есть только два "мейк сенс" варианта, причем питон, скорее всего не пойдет в продакшен. У питона с С++ вообще очень сильная связь. Много общих библиотек и очень хорошая интеграция друг в друга. Любой другой выбор языка, должен быть очень сильно обоснован вескими причинами.
Отдельно стоит сфера нейронных сетей. Там совсем наоборот. Без знания питона, делать нечего. Есть интерфейсы и к С++, но это экзотика. И это все объяснимо. Среди хороших нейронщиков, очень частно можно встречаются тех, кто не может, тупо, по бинарному дереву пройтись. Я не шучу.
|
|
Вы же понимаете что это все - "наживное"!!! Нужна библиотека - спецы ее за несколько месяцев напишут, нагло "вырывая с мясом" методики из других языков.
Если китайцы напишут крутейшую программу с открытым кодом, то мне
1) будет проще написать к нему англоязычное АПИ, чем учить китайский
2) понемногу повторить/перенести все китайские наработки в "мой язык"
Мы НЕ ЗНАЕМ что будет если 80% всех программистов будет знать JS и будет "лениться" учить другие ("вторые") языки.
Когда-то меня-студента спросили "смогу ли я написать программу для таможни" я сказал "конечно" и начал писать ее на бейсике в аксессе, не понимая что "мощности языка не хватит". Ибо знал тогда ТОЛЬКО эту программу "с базами". Придумал КУЧУ костылей чтобы компенсировать нехватку возможностей аксеса, но справился без знаний SQL серверов и даже без полноценного ООП.
Если через 10 лет "шеф на фирме" спросит своего "знатока только JS" после школы/ВУЗа "а ты можешь мне небольшую нейросеть сюда добавить", то он первым делом вспомнит свои знания про нейросети в ВУЗе и попытается их воплотить в ИЗВЕСТНЫХ ему языках. Обнаружит что УЖЕ есть (довольно мощные) наработки в области нейросетей под Node и даже браузер и... вспомнит про Питон и С++ лишь когда ему понадобятся сверх-скорость или "нанять специалистов".
ОГРОМНЫЙ "перекос в популярности" JS может сыграть довольно интересную шутку с ДРУГИМИ языками! Он как торнадо может впитать в себя чужие технологии и наработки просто за счет ОГРОМНОГО количества "свободных специалистов". Я уже ВИЖУ это торнадо (еще только набирающее мощь), но не могу предсказать последствия...
p.s. Я не умею по бинарному дереву пройтись! Не приходилось! По обычным многомерным часто... Но в глубины математики опускаться не приходилось! Думаю если надо - обучусь за 2-3 дня!
Автор: daner Не, правда смешно. Особенно про вирусы. Наверное вирусы на JS пишут.
|
|
ДА - УЖЕ пишут! Вирусы это не только "внедрение в бинарники" - это и внедрение в JS чужих браузеров. И "поддельные плагины" для Ноды, и майнеры в ифреймах, и не только...
JS сдерживает лишь то что его "запускателя" нет в большинстве ОС.
p.s. Если бы вы хотели взломать фейсбук или онлайн-банк, то на каком бы языке вы бы это делали???
Автор: daner Решил по быстрому исследование провести, в плане какой спрос на разные языки на рынке. Естественнно, не репресентативно. Просто с первых же попавшихся сайтов поиска работы в 3 странах( Canada, USA, Israel ). Странны между собой сравнить нельзя, где-то это сифры предложений о работе, где-то это цифры страниц с предложениями о работе. Где-то следят за активными предложениями, а где-то выдает результат с уже кучей неактивных. Но это не важно, так как мы языки сравниваем а не страны. Еще один нюанс, я просто забивал название языка, т.е. если в самом объявлении небыло указанно имя языка, то учтено не будет (а например в роботики и куче других мест, это не указывают специально).
результат такой:
JavaScript 275 118K 2K Python 226 183K 7K Java 84 184K 5K C++ 49 76K 4K C# 35 93K 1.5K FORTRAN 3 1K 5
в процентах от JS это будет так
JavaScript 100 100 100 Python 82 150 350 Java 31 150 250 C++ 18 64 200 C# 13 79 75 FORTRAN 1 1 <1
На мой взгляд картина в общем даже реалистичная. Т.е. я так примерно и ожидал увидеть соотношение. Как можно видеть, не смотря на очень высокие потребности рынка в скриптовых программистах, другие языки составляют не малую часть. И среди них С++ вполне себе конкурентно способный. Фортран я взял для сравнения, как язык мертвый, но очень востребованный в разных супер специфичных местах.
|
|
Делфи в список добавьте! )))
Как видите С++ постепенно СПУСКАЕТСЯ! Лет 20 назад он был на первых местах! И очень крепко за них держался... Теперь "стабильное 4е место"
Интересно что с go? (не отслеживаю)
Еще люди делали ВИДЕО с ростом-падением тенденций "во времени" (с годами). Там еще нагляднее видно рост популярности JS на фоне остальных языков. (другие языки тогда не смотрел - заметил лишь что нет "попыток догнать/обогнать JS у других")
С++ будет еще ГОДАМИ популярным! но... Он - СЛОЖНЫЙ! Излишне сложный!
Получается "социальный разрыв" между теми кто "а я на нем круто работаю", и теми кто "ой не надо про С++ - он меня еще в ВУЗе достал, а Бейсик/JS - ну конечно помню..." Тяжело сказать к чему это приведет! Предположу что к "отказу от сложного в пользу молодого и растущего". Интереса к ГО (пока) пока особо не вижу - либо его начнут "подогревать", либо появится еще один "конкурент С++". Ставлю на "конкурента" и ставлю на то что он будет "напоминать JS" )))
У компьютерных языков пока слишком КОРОТКАЯ история! Многие тенденции "голосовых" языков на них не работают. Поэтому прогнозы "лингвистов" не работают!
За 30-40 лет родились и умерли СОТНИ языков - на это раньше уходили столетия, если не тысячелетия.
----
Еще могу добавить что JS в отличии от ВСЕХ языков жутко "визуальный"! В нем ПРИЯТНО вести отладку! Если нет инструмента отладки - его можно написать за пару дней и довести до совершенства за пару лет в десятке форков! В С++ "принято что консоль всегда черно-белая - и не рыпайся".