LINUX.ORG.RU

Ответ на: комментарий от anonymous

Современный js в ноде — это python с ограниченным синтаксисом, и со скобочками вместо отступов.

А член - это такой палец с дырочкой на конце. Динамичность не является какой-то отличительной чертой ни JS, ни питона. А от того, что у них одинаковые синтаксисы значений-массивов, значений-ассоциативных массивов, и присваивания, они не становятся одинаковыми. Такой синтаксис значения-массива был в ABC и Icon задолго до питона и жавоскрипта. В ABC был довольно сложный синтаксис значений-ассоциативных массивов, который не был реализован в первом релизе питона, и был в итоге скопирован с жавоскрипта.

Классов в жавоскрипте нет, систему модулей не так давно скопировали как смогли из питона, а система типов и связанная с ними нерасширяемость стандартных операторов - это то, от чего совсем не удастся избавиться, потому что получится новый язык. В языке нет целых чисел - это как? a = 123 | 0; b = 456 | 0; c = a + b; - угу?

byko3y ()
Ответ на: комментарий от anonymous

В чём-то js даже обогнал python. Мы тут на днях в другом треде искали, как проверить, что код полностью покрыт тестами. Для js нашли, для питона — нет. А ведь для динамический языков тесты — это маст хэв.

Нет никакого смысла проверять, что тесты делают как минимум однократный проход по каждой строчке кода - реальное выполнение может свободно оказаться другим. Если же говорить про покрытие тестами всех вариантов выполнения кода, то в общем случае это алгоритмически неразрешимая задача. Есть еще подобные:
https://ru.wikipedia.org/wiki/Проблема_остановки
https://ru.wikipedia.org/wiki/Самоприменимость
https://ru.wikipedia.org/wiki/Десятая_проблема_Гильберта

byko3y ()
Ответ на: комментарий от lovesan

Я все жду, когда люди наконец поймут что от Питона одна головная боль

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

byko3y ()
Ответ на: комментарий от byko3y

заказчики всё больше понимают, что от CL одна головная боль

Где это? 99% про CL тупо не знает ничего кроме «а, был когда-то в древности такой язык, наверное устарел»

lovesan ★☆ ()
Ответ на: комментарий от lovesan

99% про CL тупо не знает ничего кроме «а, был когда-то в древности такой язык, наверное устарел»

Я эдак месяц назад приводил ссыли на то, как в нулевых годах гугель впрягал бывших лисперов работать на себя, но не на лиспе и не на «тру языках», а на том, что было принято в гугле в те времена: Python, Java, C++. Авось в гугле не ламерки работают. Внезапно, за 15 лет мало что поменялось в индустрии.

byko3y ()
Ответ на: комментарий от lovesan

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

Лисп нужен строго для мастурбации. А для серьёзной разработки нормальный человек никогда не возъмёт никакой идрис, брейнфак и прочий хаскель. Это всё для скучающих любителей почувствовать «просветление», игрушки, не более того.

WitcherGeralt ★★ ()
Ответ на: комментарий от byko3y

Google вообще довольно плохая компания в плане выбора средств разработки, со своими странными идеями, что дескать давайте равняться на идиотов и делать инструменты для идиотов(inb4 Go)

lovesan ★☆ ()
Ответ на: комментарий от WitcherGeralt

C# нет, а Си видел немного, хотел посмотреть в чём сыр-бор. Но надолго меня не хватило, конечно.

Ясно, понятно.

и прочий хаскель

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

lovesan ★☆ ()
Последнее исправление: lovesan (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

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

Не нужно путать лисп, которому уже 60 лет, с безнадежно теоретическими языками, вроде хаскеля и идриса. Даже производный от хаскеля Elm смотрится симпатишнее, потому что сделан под конкретные задачи, а не под мастурбацию на математические модели.

byko3y ()
Ответ на: комментарий от lovesan

дескать давайте равняться на идиотов и делать инструменты для идиотов(inb4 Go)

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

byko3y ()
Ответ на: комментарий от byko3y

Ну а на Go он переваливает за x10 миллионов.

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

lovesan ★☆ ()
Ответ на: комментарий от lovesan

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

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

Я могу предположить, что речь идет о том, что «инструменты для идиотов» = «упрощенные инструменты» = Go, с чем я категорически не согласен, поскольку в Go есть сборка мусора, есть защищенные механизмы параллелизации в лице зеленых потоков и каналов.

А если нужна высокая гибкость и высокий уровень абстракций - всегда есть питон.

byko3y ()
Ответ на: комментарий от WitcherGeralt

Да без разницы зачем он разрабатывался, если используется по факту только для мастурбации.

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

byko3y ()
Ответ на: комментарий от WitcherGeralt

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

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

byko3y ()
Ответ на: комментарий от WitcherGeralt

Горутины — это не зелёные потоки, планировщик их по системным раскидывает, это отдельная концепция

Ну там соотношение N к M, они могут как угодно относиться к потокам ОС-и, роли это в рамках языка не играет.

byko3y ()
Ответ на: комментарий от byko3y

Напоминаю, что на носу 2020.

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

WitcherGeralt ★★ ()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от byko3y
000100* COBOL 65 example
000200 IDENTIFICATION DIVISION.
000300 PROGRAM-ID. hello.
000400 PROCEDURE DIVISION.
000500     DISPLAY "hello, cobol"
000600     END-DISPLAY.
000700 GOBACK.
000800 END PROGRAM hello.

Посмотри как круто и по-хакерски, питон отдыхает, го ютуб переписывать.

P.S. Написание этого у меня когда-то отняло больше времени чем камень-ножницы-бумага-ящерица-спок на gas в тот же вечер, лол. Долго не мог понять в чём проблема, оказалось, что мало ноликов.

WitcherGeralt ★★ ()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от byko3y

Ты про SIMD, что ли? Отдельные компиляторы уже умеют и в него код компилировать.

Умеют, но очень редко и значительно хуже чем то, что можно написать руками. Потому и приходится писать руками.

anonymous ()
Ответ на: комментарий от WitcherGeralt

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

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

byko3y ()
Ответ на: комментарий от byko3y

Нет никакого смысла проверять

Смысл есть потому, что это динамика, где мелкая опечатка в имени будет ловиться в рантайме. Можно расставить type hints по всему коду. А можно покрыть код тестами — это будет надёжнее типов, и выловит часть логических ошибок, вроде случайно вставленного в условие знака «<» вместо «>».

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

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

Не строка, а весь код. А то на JS легко можно всю функцию в одну строку записать (на питоне тоже можно, но надо извратиться). Вот, для JS такая проверялка нашлась, для питона — нет.

anonymous ()
Ответ на: комментарий от anonymous

Ты про SIMD, что ли? Отдельные компиляторы уже умеют и в него код компилировать.

Умеют, но очень редко и значительно хуже чем то, что можно написать руками. Потому и приходится писать руками.

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

byko3y ()
Ответ на: комментарий от anonymous

Смысл есть потому, что это динамика, где мелкая опечатка в имени будет ловиться в рантайме. Можно расставить type hints по всему коду. А можно покрыть код тестами — это будет надёжнее типов, и выловит часть логических ошибок, вроде случайно вставленного в условие знака «<» вместо «>».

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

Вот, для JS такая проверялка нашлась, для питона — нет.

Есть и желающие написать решение проблемы остановки - и что? Задача принципиально нерешаемая, а ее кто-то решил - удачи пользоваться их решением.

byko3y ()

Тред не читал.

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

kachsheev ★★★ ()
Ответ на: комментарий от WitcherGeralt

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

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

anonymous ()
Ответ на: комментарий от byko3y

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

Это про что речь? Если про Clojure, то тогда есть современные диалекты кобола… (далее по тексту): SAP ABAP/4, Informix 4GL. Если речь про SBCL и Racket, то PowerCOBOL и Visual COBOL распространены примерно также.

monk ★★★★★ ()
Ответ на: комментарий от kachsheev

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

Отличная аналитика, типа «хорошо, когда всё хорошо». Можно же ведь продавать лохам и откровенный кал, тупо рыночный пузырь, и примеров много - какой-нибудь очередной ICO можно привести, и там уже вообще нет разницы, что и на чем написано: бери больше - беги дальше. Вон, боинг выпустил 737 MAX, два уже разбилось за два года эксплуатации - ну и кому нужен такой эффектный выход?

byko3y ()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от anonymous

И именно СL - очень хорошая альтернатива питону, как языку для прототипирования

Скорее наоборот - питон стал хорошей альтернативой CL, на которую перекатились многие лисперы.

byko3y ()
Ответ на: комментарий от monk

Если про Clojure, то тогда есть современные диалекты кобола… (далее по тексту): SAP ABAP/4, Informix 4GL

Эти диалекты сделаны в 80-х, и это уже говно мамонта, пусть и тепленькое из-за больших объемов рынка.

SBCL и Racket, то PowerCOBOL и Visual COBOL распространены примерно также

Ага, амурский тигр распространен так же, как рыбный филин. То есть - вымирающий вид.

byko3y ()
Ответ на: комментарий от byko3y

То есть - вымирающий вид.

А Clojure не вымирающий вид? У Visual Cobol есть интеграция с C#, Java и компиляция в машинный код. Интеграция с Eclipse и Visual Studio. Развёртывание в AWS.

monk ★★★★★ ()
Ответ на: комментарий от monk

А Clojure не вымирающий вид?

Оно появилось в 2007 и не раскручивалось никем. Так-то среди кодеров по популярности где-то на уровне Rust, Dart, Elixir, и WebAssembly, то есть, довольно скромный сегмент, но все же значительный.

У Visual Cobol есть интеграция с C#, Java и компиляция в машинный код. Интеграция с Eclipse и Visual Studio.

Обычно у руководителей, которые отвечают за принятие решения о переносе имеющейся системы с кобола на другую платформу, самый главный вопрос - это вопрос стабилньости работы в процессе перехода. Осознавая, что ныне работающая система сложная, имеет внутри костыли и неожиданные фичи, руководитель решает, что лучше остаться на имеющейся системе, а писать на жаве только новый софт, и в этом им помогают всякие IBM, микрофокус, и прочие. Да, уже подходят к тому, что тупо компилируют кобол в байткод JVM/CLR - делается это скорее для того, чтобы сократить стоимость вызовов между жавой/C# и коболом в системе, которая частично состоит из старого кода на коболе, а частично - из нового. Уже давно идет тенденция на ввод классов к кобол, и такими темпами кобол станет просто неудобной оболочкой над JVM/CLR.

byko3y ()
Ответ на: комментарий от byko3y

Так никто и не просит писать плохие программы на Python.

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

Octagon ()
Ответ на: комментарий от Octagon

Напомню ТС:

Зачем пишут веб на python, в частности django, если скорость работы ниже чем у php? В чем профит?

Твоя фраза каким-то образом отвечает на вопросы? Ruby не? PHP не? CL не?

byko3y ()
Ответ на: комментарий от Octagon

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

byko3y ()
Ответ на: комментарий от byko3y

Да, уже подходят к тому, что тупо компилируют кобол в байткод

Так Clojure родилась такой.

Уже давно идет тенденция на ввод классов к кобол, и такими темпами кобол станет просто неудобной оболочкой над JVM/CLR.

От появления классов (а они там появились довольно давно) остальные возможности Кобола не пропали. Там по-прежнему есть деление на параграфы и нормальная арифметика.

Вот человек пишет:

Most of the banks here in Germany build their websites using it. I know many companies in different places around the world using it to assure security (mostly non-technical companies, but companies who need some software for their product or for marketing and accounting).

Да и PowerCOBOL используется скорее как замена Visual Basic, а не как запускалка для старых программ.

monk ★★★★★ ()

В чем профит?

Если людям нужна скорость, они используют Go или Rust. Если скорость особо не важна, то хватит и Django на Python. А про php - забудь, это прошлый век. На нём сейчас уже никто не пишет. Только всякие интерпрайзы поддерживают свои УГ-сайты на php. Либо фанатики и совсем недалёкие с wordpress.

th3m3 ★★★★★ ()
Ответ на: комментарий от byko3y

А член - это такой палец с дырочкой на конце. Динамичность не является какой-то отличительной чертой ни JS, ни питона...

Всё не настолько плохо. 🙂 Они не полностью совпадают, но у них схожие подходы, цели и области применения.

Сейчас питон более гибкий и фичастый — за счёт возраста (нода ещё ребёнок по сравнению с ним), и более удачного стартового синтаксиса (нода из-за legacy не может кардинально менять синтаксис — слишком рискованно, хотя и не исключено, например, сделают «use strict2.0»).

Но это пока. В 2015-м в JS появится простенький синтаксический сахар для классов, и генераторов. List comprehension и перегрузки операций пока нет, но можно что-то накостылять через map/filter, и через .valueOf().

И питон и js/нода — языки общего назначения, с менеджером модулей, и простым динамическим синтаксисом. Оба можно использовать для скрипов, веба и десктопа. А js даже на мобилки забрался. Питон на мобилках всё ещё никак.

anonymous ()
Ответ на: комментарий от anonymous

Сейчас питон более гибкий и фичастый — за счёт возраста

Руби? PHP? CL? Racket? Они постарее JS будут, а до питона почему-то не дотянули. Может потому, что питон изначально был более гибкий и фичастый? По крайней мере, по сравнению с PHP и JS.

List comprehension и перегрузки операций пока нет, но можно что-то накостылять через map/filter, и через .valueOf().

У JS есть неустранимая нерасширяемость, которая, например, не дает vue.js полноценно отслеживать изменения переменных, как то установка атрибута объекта или значения в массиве по индексу.

И питон и js/нода — языки общего назначения, с менеджером модулей, и простым динамическим синтаксисом

Тьюринг-полнота еще не делает язык языком общего назначения. JS 20 лет был специализированным языком для написания примитивных client-side скриптов. То, что кто-то решил натягивать сову на глобус, еще не значит, что сова стала общего назначения. Пример у меня прямо сейчас перед глазами: после слияния веток проект начал гадить ошибками, и, самое страшное, нет никаких средств отладки проблемы, я могу лишь тыкать наугад, скрестив пальцы, и надеяться, что всё заработает как надо. Разрабы тупо не заложили в JS возможность отладки. О каком языке общего назначения может идти речь?

byko3y ()