Здравствуйте, novitk, Вы писали:
НС>>Практика показала, что фишка то есть, а вот широкого использования ее особо то и нету. N>Разве она не сокращает писанину с List<Object>?
Может и сокращает. Но за пределами СОМ интеропа как то так оказывается, что List<Object> особой популярностью не пользуется.
Здравствуйте, novitk, Вы писали:
N>Ватакуси говорит о системах занимающиеся подсчетом рисков в JPM and BAML. Это безусловно самые дорогие и важные проекты в ИТ инвестбанка.
Возможно. Только он эти детали уточнить забыл, причем явно намеренно, так как уже не в первый раз.
Здравствуйте, Ночной Смотрящий, Вы писали:
F>>>например, банальные форумы и прочие штуки лучше сделаны на пхп, поэтому для бизнеса оно быстрее и дешевле C>>Самый популярный сейчас форум (Discourse) написан на Ruby. НС>Самый популярный — reddit, и он на Петоне.
У них немного разные области, Reddit — это централизованный сайт, а Discourse — аналог phpBB.
Здравствуйте, neFormal, Вы писали:
C>>Зачем? REPL в принципе не очень-то удобен для реальной разработки. F>ха-ха! скормите его печень лисперам!
Это те люди, от которых хайпа было больше, чем от всего остального в индустрии вместе взятого? С полноценно нулевым итоговым выхлопом?
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, novitk, Вы писали:
НС>>>Практика показала, что фишка то есть, а вот широкого использования ее особо то и нету. N>>Разве она не сокращает писанину с List<Object>?
НС>Может и сокращает. Но за пределами СОМ интеропа как то так оказывается, что List<Object> особой популярностью не пользуется.
Думаю косность мышления. Гетерогенные коллекции есть более чем везде, а сахарок вроде неплохой.
Здравствуйте, Cyberax, Вы писали:
F>>ха-ха! скормите его печень лисперам! C>Это те люди, от которых хайпа было больше, чем от всего остального в индустрии вместе взятого? С полноценно нулевым итоговым выхлопом?
Алан Кей на кворе только о нем и говорит, дескать уравнения Максвелла в cs. Выхлоп-то может и нулевой, а вот влияние оказал будь здоров.
Здравствуйте, neFormal, Вы писали:
C>>Типы — это как перила на лестнице. И они мешают прыгать с пролёта на пролёт. F>типы — это такие костыли, чтобы программа не падала рандомно после запуска.
Нет. К моменту запуска/компиляции типы уже не нужны (кроме как для оптимизации). Они нужны во время разработки.
C>>Идеология та же — создание виртуального окружения. В venv — за счёт магических переменных окружения. F>фактически виртуальная машина и переменные окружения — немножко не одно и то же.
Docker — это не виртуальная машина. Учим матчасть.
Здравствуйте, Ватакуси, Вы писали:
C>>Я участвовал в миграции проекта с Питона на Go. Количество бардака после миграции сильно упало, а качество увеличилось. Количество строк там было меньше, в районе десятка миллионов. Миграция заняла несколько лет. В>Какие-то чудеса рассказываешь. Пять самых крупных в мире банков с огромным удовольствием уходят из Явы (почти ушли, на самом деле) в питон. Я про 80% их кода.
Кто где уходит? Имена, пароли, явки.
В>Они такие тупые, а ты умный?
Видимо.
C>>Понятно, что при желании и должной дисциплине можно и на ассемблере всё писать. Но зачем? В>Затем, что когда хочешь написать на яве, с# или подобных языках то, что делается на питоне за час-два у тебя вдруг это занимает день. А то и два.
Не бывает такого. А вот наоборот — бывает.
C>>Брехня это всё. Оно всё равно будет однопоточным, асинхронность просто размажет тормоза по всем клиентам. В>Это не брехня, как ты изволился утончённо выразиться, а суровая правда жизни. Если у тебя распределённая система (и база), кучка сервисов и клиентов, то I/O будут занимать минимум 50%, а то и все 90% времени выполнения.
Да-да. Знаю я эти сказки.
В>Если ты, конечно, фибоначчи считаешь или там рисуешь чего, тут питон конечно не нужен. Только когда ты последний раз подобные задачи решал?
Нет. Банальный SQLAlchemy + рендеринг шаблонов уже влёгкую съест весь CPU на одном ядре.
C>>Корутины в текущих реализациях Питона относятся к категории "do not use" из-за "coloured function problem". В>Сам придумал?
См.: http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/
Языки, где такой проблемы нет: Go, LUA и даже Perl6.
C>>Эээ... Ты ТОЧНО писал на Питоне? CPython — это интерпретатор Питона. Есть Cython, но он крайне ограничен и требует писать на (фактически) С с питоновским синтаксисом. В>Да, писал. Cython нужен для всях вычислений. И на нём не пишут обычно. А пишут сперва на нормальном питоне, а потом когда уже всё готово — оптимизируют.
Угу, переписыванием на нормальный язык.
C>>К нему прилагается сложность распространения — если хочется распространять бинарные артефакты, то с Cython начинаются прыжки и ужимки из-за его мега-умности. В>Ты пробовал? Там всё прямолинейно как дерево, какие прыжки?
Попробуй запаковать скомпилированный Cython'ом код. Чтобы можно было сделать красивый DEB/RPM для лёгкой установки.
C>>Даже с Докером хорошей практикой является создание наиболее лёгкого образа, без компиляторов и сред разработки внутри. В>эээ каких сред разработки? Докер несколько для другого. Обычно в образё все, что тебе нужно для ИСПОЛНЕНИЯ. В>Пакетный же менеджер под названием pip отлично справляется со своими задачами уже много лет.
Не справляется. Там отсутствует понятие lock-файла, например.
Питоноводы это тоже понимают, потому появились всякие Conda ( https://conda.io/en/latest/ ), но пока ещё не доросли.
C>>В том числе и с ними (разных национальностей), как на любом большом проекте. В>Ну, с ними проблем конечно становится больше. Тут как раз без твоей дисциплины только на компилятор полагаться. В>Правда, когда они пишут SQL функцию (компилируемую) на 10 тыщ строк с 39-ю запросами внутри (и обращению к десяткам разных таблиц), это понять можно только после присоединения к кришне.
Так SQL как раз — это динамический язык.
C>>JS нынче чаще всего заменяют TypeScript, который более-менее адекватен по сравнению с Питоном. В>Не заметил огромной адекватнойсти. И мода на TS что-то утихла.
Где утихла? Большинство библиотек на JS нынче имеют аннотации типов.
Здравствуйте, neFormal, Вы писали:
F>>>банальный пример с гетерогенными списками F>>>очень актуально для конфигов, где в одном списке могут лежать разные структуры данных C>>1) Не надо так делать. F>ты скозал?
Да.
C>>2) Какие проблемы-то? F>сериализации дофига
Где?
F>>>в некоторых статических языках это можно ещё быстро описать, но мейнстримовые требуют довольно много действий, и большинство программистов этого старательно избегают C>>List<Object> — Java, []interface{} — Go, std::list<void*> — C++, ... F>вся суть статико-поклонников
То есть?
Здравствуйте, WolfHound, Вы писали:
WH>>>Так скрипт заполняет определённые структуры данных. WH>>>Дёргает определённое API. F>>или нет WH>Что за детский сад. Если нет аргументов так и скажи что был не прав.
поясню
скрипт может создавать промежуточную схему, с которой уже будет работать читалка итогового конфига
т.е. сам скрипт не про это, но в итоге получается нужная схема, на которую можно уже натравить статику
WH>Ну, вот теперь ещё и шумы полезли. Что не можешь отстоять свою позицию на конфигах? Так ты их сам предложил.
не, ну если ты обобщаешь на вообще все данные, то я могу привести примеры, где это неприменимо
давай оставаться в рамках примера с конфигами
WH>Я не понял. Ты споришь или соглашаешься? WH>За то через рефлексию очень распространённый. Почему ты это проигнорировал? WH>Не лезет в твою теорию? WH>АлгТД очень даже решают. WH>Вот, например, очень хорошая лекция. Там всё очень подробно разжёвано.
поясню всё скопом
я не спорю с тем, что на статике можно всё это сделать.
я говорю, что это занимает больше времени, добавляет ценник в разработку, проблем с поиском и обучением кадров
кроме того, многие готовые системы не позволяют сменить язык на тот, где есть АТД, или активно использовать рефлексию.
а программисты избегают сложных генераторов и, зачастую, не умеют их писать.
WH>Так и где тогда обещанные преимущества перед статической типизацией?
преимущество в скорости введения фичи.
гетерогенные коллекции интуитивно понятней и требуют меньше работы для поддержки.
WH>>>Твой код ждёт поля foo и bar, а получил baz и biz. WH>>>Что дальше? F>>скипаем. WH>А если там важные данные?
скипаем. эти данные не поддерживаются кодом. то же самое происходит и в случае статики(если, конечно, ты ошибками не начинаешь валить)
всё это решается на этапе автотестов. на выходе получается комплекс из кода и конфигов, которые в нём работают
WH>>>Вот это ожидание foo и bar и есть неявно заданная схема данных. WH>>>И если в случае со статически типизированным языком ты при чтении конфига получишь сообщение об ошибке с указанием строки и позиции. То в случае с динамикой у тебя через полчаса свалится программа с сообщением: у объекта нет нужного поля. F>>в этом и цель. WH>То есть твоя цель это написать падучий багодром? Я тебя правильно понял?
да, потому что это вылезает на тестировании.
такие системы имхо меньше приспособлены к отдаче в неподготовленные руки(хотя это может быть спорно), потому что требуют большего понимания предметной области
а ошибки будут попроще. типа, "в такой-то сущности нет такого-то поля"
Здравствуйте, Ночной Смотрящий, Вы писали:
F>>например, если в качестве конфига выступает скрипт(а такое тоже бывает) НС>Если такое бывает, то там количество и стоимость вменяемого покрытия тестами будет совершенно заоблачной. Естественно, что никто этого не будет. В итоге получаем нестабильное поделие, лююое движение в котором чуть от накатанной колеи приводит к печальным поледствиям
насколько я заметил, это вылезает на тестах, которые покрывают поведение
Здравствуйте, Cyberax, Вы писали:
C>>>Зачем? REPL в принципе не очень-то удобен для реальной разработки. F>>ха-ха! скормите его печень лисперам! C>Это те люди, от которых хайпа было больше, чем от всего остального в индустрии вместе взятого? С полноценно нулевым итоговым выхлопом?
не знаю на счёт хайпа, а выхлоп от них есть
но это всё зависит от популярности, которая у лисп-языков довольно слабенькая
Здравствуйте, Cyberax, Вы писали:
C>>>Типы — это как перила на лестнице. И они мешают прыгать с пролёта на пролёт. F>>типы — это такие костыли, чтобы программа не падала рандомно после запуска. C>Нет. К моменту запуска/компиляции типы уже не нужны (кроме как для оптимизации). Они нужны во время разработки.
всё верно, я о том же.
не было бы типов, этот сорт погромистов делал бы падучее багло, потому что без костылей для разработки они уже не могут
так же и появились вообще типы, не?
C>>>Идеология та же — создание виртуального окружения. В venv — за счёт магических переменных окружения. F>>фактически виртуальная машина и переменные окружения — немножко не одно и то же. C>Docker — это не виртуальная машина. Учим матчасть.
не пропускай слова.
докер даёт эмуляцию системы, что для пользователя выглядит, как виртуалка
Здравствуйте, Cyberax, Вы писали:
F>>>>например, банальные форумы и прочие штуки лучше сделаны на пхп, поэтому для бизнеса оно быстрее и дешевле C>>>Самый популярный сейчас форум (Discourse) написан на Ruby. НС>>Самый популярный — reddit, и он на Петоне. C>У них немного разные области, Reddit — это централизованный сайт, а Discourse — аналог phpBB.
варианты пхпББ есть и на питоне
тут вопрос в том, можно ли взять движок дискурса и натянуть на свои нужды дёшево?
Здравствуйте, neFormal, Вы писали:
C>>Это те люди, от которых хайпа было больше, чем от всего остального в индустрии вместе взятого? С полноценно нулевым итоговым выхлопом? F>не знаю на счёт хайпа, а выхлоп от них есть
И какой же? Я не знаю ни одного крупного проекта на Лиспе, кроме emacs. Собственно, даже и мелких проектов не знаю.
F>но это всё зависит от популярности, которая у лисп-языков довольно слабенькая
А хайпа много, ага.
Здравствуйте, neFormal, Вы писали:
C>>У них немного разные области, Reddit — это централизованный сайт, а Discourse — аналог phpBB. F>варианты пхпББ есть и на питоне
Ага. Тут речь шла о том, что PHP — это наше фсьо.
F>тут вопрос в том, можно ли взять движок дискурса и натянуть на свои нужды дёшево?
Можно.
Здравствуйте, neFormal, Вы писали:
F>варианты пхпББ есть и на питоне F>тут вопрос в том, можно ли взять движок дискурса и натянуть на свои нужды дёшево?
Оно там, вроде, не движок а сервис. Изрядно глючный и тормозной. Но это заслуга JS, а не Ruby.
Здравствуйте, novitk, Вы писали:
НС>>Может и сокращает. Но за пределами СОМ интеропа как то так оказывается, что List<Object> особой популярностью не пользуется. N>Думаю косность мышления. Гетерогенные коллекции есть более чем везде, а сахарок вроде неплохой.
Есть много разных способов обрабатывать гетерогенность, не отказываясь от типизации.
Здравствуйте, Cyberax, Вы писали:
C>Так SQL как раз — это динамический язык.
Причем непонятно почему. 99% конструкций прекрасно выводятся статически. За бортом остаются пара не особо нужных извратов, да некоторые странности в реализации отдельных sql серверов (кое кто, к примеру, в одном рекордсете может поменять по ходу выборки тип колонки).
Здравствуйте, Cyberax, Вы писали:
C>И какой же? Я не знаю ни одного крупного проекта на Лиспе, кроме emacs. Собственно, даже и мелких проектов не знаю.
Все тот же реддит был изначально на лиспе. Переписали на петон.