Почаны, поясните про динамическую типизацию. Она же уебищна. Для чего она вообще? Что она вообще дает, кроме того, что вместо нескольких одинаковых функций под разные типы аргументов, пишешь одну и передаешь в нее все, что хочешь? Это здорово конечно, но в реальной жизни это же нахуй не нужно. Если ты пишешь функцию sum(a,b):return a+b, то все это для того, чтобы сложить два числа. Нахуя тебе возможно складывать строки, экзмепляры класса MyAwesomeClass или еще какая поебота? И ведь берешь ты сторонний, херово задокументированный, модуль. И начинаешь охуевать ибо вообще не ясно, что передавать в ту или иную функцию и что получишь на выходе. Начинаешь гуглить, доки читать. А для чего все это? В статических языках в 9 случаях из 10 ты только из названия функции, аргументов и возвращаемого значения, сразу понимаешь, что к чему. Плюс интеллисенс в статике работает отлично. В итоге в чужом говне копаться не приходится. Дело в том, что перекатился из сисярпа на питон. Все в нем нравится, кроме типизации, но видимо я просто ее прелести не раскусил. Остальным же нравится. Выручай, анон.
Бамп
Бамп 2
Бамп 3
>>737926>>737928>>737930Ну и чего ты бампаешь тред, которому 15 минут?Динамическая типизация позволяет быстрее писать скрипты, концентрируясь на алгоритме, а не на переменных. Привыкнешь как-нибудь.Кстати, анон когда-нибудь встречал скрипты со статической типизацией?А насчет документации - тебе в любом случае придется ее читать.Кстати, в питоне можно писать аннотации к параметрам функции, которые показывают типы, правда, они только как информация и проверка типов на деле не происходит.
>>737932>Динамическая типизация позволяет быстрее писать скриптыэто что за чушь?>анон когда-нибудь встречал скрипты со статической типизацией?встречал, и не раз
>>737932>Кстати, анон когда-нибудь встречал скрипты со статической типизацией?Ну вот TypeScript вроде бы так умеет>концентрируясь на алгоритме, а не на переменныхНу как запись int i =0 вместо i=0 помогает лучше сконцентрироваться на алгоритме? Все равно не понял>в питоне можно писать аннотации к параметрам функцииДа, в курсе. Но они буквально более-менее полноценно в последней версии заработали. Т.е. сторонние модули все без аннотаций в основном.Может кто подскажет, что почитать на тему перехода со статики на динамические ЯП?OP
Динамическая типизация позволяет разбивать программу на полностью независимые модули. Каждый из которых может быть написан и откомпилирован полностью независимо от других. И внесение изменений в один модуль не требует перекомпиляции всех остальных (само по себе). Тогда как для реализации статического контроля при компиляции одного модуля тебе нужна определенная инфа от всех других модулей которые он использует (В С, например, это хедеры). И внесение даже минимальных изменений в один из модулей (поменял тип одной переменной с float на double) требует полной перекомпиляции всех зависимых модулей. Также динамическая типизация немного упрощает разработку - динамическая макака просто высирает код, тогда как статической макаке приходится еще подправлять этот код чтобы он прошел статическую проверку. В общем динамическая типизация ускоряет превращение идей в программы, особенно при инкрементальной разработке. Когда ты написал один скриптик. Потом дописал туда еще что-то. Потом еще один скриптик. Потом добавил или подправил еще. Динамическая дрисня позволяет быстро вносить изменения в программы, даже в рантайме (при соотвествующей инфрастуктуре), запускать для тестов неполные модули или находящиеся в неконсистентном состоянии. При статической типизации это все сложно, хотя если порвать жопу то наверное можно и при статическом реализовать.
>>737958> Вы только что прослушали крестушиное кукареканье
>>737997Все он правильно тебе написал.
Потому что в фундаментальном смысле динамическая типизация первична - лямбда исчисление было открыто раньше типизированного, которое вообще не тьюринг-полно; наивная теория множеств обходилась без типов и прочее.С другой стороны, когда ты говоришь о "статической типизации" ты подразумеваешь жалкие аннотации string, int, MyObject в какой нибудь жабке, а ведь это только начало пути. Как ты отличишь строки полученные от пользователя и нуждающиеся в санитизации? Для этого в жабке корифеи предлагают заводить типы обертки под каждый пук (ищи primitive obsession). Тут встает такая "дилемма" - либо создать свой собственный тип обертку TaintedString и кучу бойлерплейта либо держать все в голове, т.е. та же динамическая типизация - ты от нее никуда не ушел.А дальше открываются увлекательные миры сессионных типов, рефайнменты, зависимые типы и доказуемая корректность.
>>737956> int i =0 вместо i=0В котлине тоже можно написать var i = 0 а не var i: Int = 0, но он статически типизирован, так что динамическая типизация не про это
>>738003От value class нет бойлерплейта тащемта. И самые частоиспользуемые можно вынести в либу и реюзать.
>>737958>Динамическая типизация позволяет разбивать программу на полностью независимые модули ...Это не свойство динамической типизации. Никто не заставляет затирать информацию о типах в статически-типизированных языках.>В общем динамическая типизация ускоряет превращение идей в программы, особенно при инкрементальной разработке.Это кажется. На самом деле, ты код на пистоне будешь отлаживать дольше, чем такой же на фшарпе/окамле, который ещё и пишется наполовину в репле (то есть, 98% его работает сразу после написания).
>>738006Это вывод типов, ничего общего не имеющий с динамической типизацией. Она именно про это.>>738031Ты про тесты на каждый пук ещё забыл, но в целом-то да.
>>738031> не заставляет затирать информацию о типахПоясни. В динамикопараше, если тебе нужна функция foo() из другого модуля ты просто вызываешь foo() и надеешся что эта хуйня не наебнется в рантайме. Тоесть разработка полностью независима от другого модуля, даже при его использовании. Для осуществления статического контроля тебе нужна инфа от другого модуля - существует ли вообще такая функция, сколько там и каких аргументов и что она возвращает. Тоесть модули связаны между собой и при изменениях инфы нужно перекомпилировать все модули которые ее используют. Где здесь "затирание типов"?
>>738038Про заголовки файлов слышал? В заголовке модуля можно прописать и функции, и что они возвращают, и что им надо для работы. Затирание информации о типах было к тому, что дальше ты писал про возможность передать дабл туда, где нужен флоат. Собственно, никто тебе не мешает таскать тип значения с собой и делать то же самое в статических языках. Просто так не делают, ибо тормозить будет как динамикопараша.
Да много где встречал, что динамическая типизация хуита. А в чем тогда подводные камни использования для веба, допустим, Go? Я нюфаг, поясните чем он плох
>>737921 (OP)Динамическая типизация позволяет быстро разрабатывать. Половина паттернов из GoF, типа абстрактной фабрики и прочего подобного говна результат уёбищности статической типизации и пердолинга с ней. Постоянно доказывать тайпчекеру что ты не верблюд и прогибаться под машину - это конечно доставляет всяким аутистам, но нормальные программисты обходятся без этого.
>>738072>пукпукпукУ нормальных программистов ничего не падает и не тормозит в рантайме, а так же не нужно писать тесты на каждый выпук.
>>738078Круто. А причем тут типизация?
>>738084Ну ты попробуй пораскинуть мозгами. Или перепиши там интерпретатор своего языка на него же, чо.
>>737921 (OP)Так вот. Статическая типизация хоть и охуенно мешает нормальному программисту разрабатывать, но зато спасает от постоянных обосрамсов тырпрайз рабов. А так как у мартыханов никогда выразительных средств и не было, то тайпчекер постоянно бьющий по пальцам и заставляющий везде указывать типы (что иногда бывает не так просто) воспринимается как нечто положительное.
>>737921 (OP)Всё правильно говоришь.К счастью уже есть MyPy, который пилит Гвидо (среди прочих), это грубо говоря линтер, который проверяет типы (похоже на TypeScript).
>>738091>TypeScriptГовно же.
>>738091Так он уже есть и можно им вот так взять и воспользоваться?
>>738092Чому? Из-за лишнего этапа компиляции?
>>738092Охуенно>>738093Да, указываешь типы аннотациями и запускаешь mypy время от времени чтобы проверить (лучше интегрировать в CI если это не laba1.py). Брат жив.
>>738094нет. TypeScript требует обязательного наличия файлов деклараций для сторонних библиотек. Приходится их скачивать у рандомных хуев из интернета. flowtype в этом плане более продуман, не требует деклараций для либ + имеет рантайм-проверку типов.
>>738042Двачую. Что про Go скажете, аноны?
>>738072>доказывать тайпчекеру что ты не верблюд и прогибаться под машинуТак типизация один хрен строгая в том же пайтоне. Т.е. тебе все равно прогибаться придется. Ну или поясняй, что ты имел в виду
Статическая типизация не предотвращает от ошибок сложнее «случайно складываем слонов с китами», она не спасает от опечаток, не нарушающих типизацию, она не спасает от ошибок в логике, а последних двух типов ошибок — большинство.
>>737982
>>738102Фигню написал. От опечаток защищает любая более-менее нормальная IDE. От ошибок в логике не спасет ничего вообще ибо если б еще и от этого кто-то спасал, то зачем нужны программисты тогда?
>>738102>>738096Ну т.е. раз сам Гвидо за такое взялся, значит проблема существует и динамические ЯП не так охуенны?
Чтоб на статической типизации писать обобщённые алгоритмы, нужна постоянно какая-то дроч темплейты, генерики, потом генериков не хватает, начинаются какие-то извращения, типа генериков высшего порядка, типов высших порядков. Пиздец в общем.
То же самое касается создания универсальных коллекций.
>>738111Назови практические примеры пиздеца. И не бугурти если вопрос глуп, я нюфак
Да и когда на динамике в 2 раза меньше писать. Типизация все равно не спасает от всех ошибок, культуру написания тестов не заменить на типы.
>>738111Вот пишешь ты сайтик на похапэ, много там будет обобщенных алгоритмов?
>>738116Сайтик сайтику рознь. Может и будет. >>738113Ну попробуй на Go (где нет дженериков) написать обобщённый алгоритм поиска элемента в массиве не скатываясь в динамическую парашу.
>>738110Конечно
>>738119Goвно Goвну рознь, маня. Там все контейнеры реализовываются на магии компилятора, ахуенный конечно пример – язык без метапрограммирования.Хотя даже там есть кодогенерация для бойлерплейта.
>>738122Я просто привёл простой пример к тому, о чём говорил выше, о необходимости дополнительных средств вроде обобщённого программирования, паттернов-хуятернов, вывода типов и прочему там, где динамика просто работает.Олсо, дженерики являются метапрограммированием только в говноязыках уровня жабы.
Статическая типизаця рулет ееее!
>>738124И в чём же смысл этого? В том, что корректность типов будет доказываться в рантайме и тормозить хуже чем ява со включенным перемещающим сборщиком? В то, что тебе для функции slozhit1plus1() нужно писать тесты?
>>738122Так все-таки что с Go? Просто в треде ему посвященному эти долбоебы Илюшу какого обсуждают весь тред, по делу мало что написано. Я про него знаю только, что он статический, похож на C, там нету классов, но есть структуры и что он вроде бы заточен под веб>>738042-кун
>>738127Ну во-первых, сама по себе статическая типизация не гарантирует производительности программ. Во-вторых, в прикладных программах не требуется какая-то хардкорная скорость, а требуется достаточная, где не очень то важно отрабатывает код за 50мкс или 50мс. Время программиста дороже времени железяки. Может в каком нибудь системном коде и требуется 0 оверхерда, но там обычно пишут на лоу левел языках, где ошибок и так много где наловить можно, а к особым удобствам никогда и не привыкали.
>>738129С ним-то всё ок.Под веб заточены пхп, руби на рельсах и прочие. Го – это про микросервисы, веб сервера и прочую высокоуровенную системщину.Если ты нюфаг – для тебя там всё отлично, от его убераскетичного синтаксиса плюются только писавшие на более навороченных языках.
А зачем типизация и тесты? Я просто помню что принимают и возвращают мои функции.
>>738133Вот именно – в прикладном софте и нету никакой ебли с типами. Назови те самые "костыльные" паттерны про которые ты втираешь пол треда.Относительно динамических – гарантирует.
Так то, например, в няшной типы вообще для компайлера нужны, а не для того, что обезьянки не обсирались, как в тырпрайзе.
>>738137Ну если ты helloworld в одного, то помнишь. А если ты в команде работаешь, или не дай бох, чужой модуль подключил, то ты помнишь ничего не можешь
>>738138Ты ебанутый? В прикладном софте у тебя нет обобщённых алгоритмов, коллекций и ебли с декларациями типов и патернами-хуятернами, там где надо декларировать что то сложнее чем Кукарек <кококо> кукарек = new Кукарек <кококо> ?
>>738135Ок, где его реально можно применить? Свой веб-сервер только запилить? Тебе пользоваться приходилось?
>>738139Они там для всего и сразу, а так же по тому, что вычислять типы в рантайме 40 лет назад было дороговато.Хотя в 89 стандарте и вывод типов был, хз насколько они там компилятору нужны.
>>738140А если апи модулей документируется?
>>738147>Они там для всего и сразуДа нихуя, с неявным кастингом и слабой типизацией оно программисту нихуя не помогает.
>>738148А если переехать из маня-мирка?Ну и собственно в чем выигрыш в скорости написания кода, если тебе надо написать кучу дополнительных тестов и еще обширные комментарии ибо из контекста функций никакой информации очевидной не следует?
>>738145Нет. Ты назови хоть один паттерн, который исправляет говнище в типах.Я конешно понимаю что ты ничего кроме явы и питона не видел, но во всех современных языках конструкции видаvar arr = [1,2,3];arr.add([1,4,8,8]) // с 9 маявыводятся компилятором без проблем. Даже в плюсах (!!!) блять не нужно указывать тип для шаблонных функций.Суть: ты либо пишешь указывая явно тип, либо узнаёшь его при отладке.
Короче, я хозяин машины, я программист и мне лучше видно. Если я хочу умножить дилды на строки, потому что так надо, я не потерплю чтоб какой сраный тайчекер кукарекал что я не прав. Если я знаю, что в переменной а сейчас находится то, что умеет делать foo(), я не намерен доказывать ёбаной программе что это так. Мне нужно прилы пилить и денежки поднимать, а не корректность доказывать как аутист.
>>738153Короче, я хозяин машины и всего прочего. Я хочу поднимать денюжку, а не сидеть читать логи чтобы узнать, где же я обосрался умножив дилды на строки.
>>738151>А если переехать из маня-мирка?То есть это у вас доку не пишут, а у меня манямирок? Ясно.>написать кучу дополнительных тестовКак будто ты не будешь писать тесты на своей статикопараше. >еще обширные комментарии ибо из контекста функций никакой информации очевидной не следует?Мне, как пользователю модуля, нужно знать только то, что делает 3 апи метода по 10 строк, а не все 3к строк внутреннего кода. В любом случае, комментарии не имеют отношения к типизации, это отдельная тема.>>738152Ну подумай зачем тогда тебе нужны генерики (в.т.ч. высших порядков) и абстрактные фабрики чтоли. >вывод типовНе везде возможен. В динамике он и не нужен изначально. Зачем же усложнять себе жизнь и увеличивать время компиляции?
>>738154Почему ты обсираешься, няша?
>>738155Где же невозможен? Ни разу такого ещё не встречал.>В динамике он и не нужен изначально.Потому что он выводится в рантайме, лел.>увеличивать время компиляции?Распространённое заблуждение от человека, не пробававшего писать парсеры языков. Только в совсем красивых закосах под динамику вроде свифта и скалы что-то замедляется.Вообще, 2016 год, хороший проц с SSD стоит почти копейки, как и облачные сервера для билда. Хотя для очередного круда это нахуй не упало.>>738156Нельзя обосрать кого-то не посрав, нутыпонел.
Короче, в очередной раз убедились, что штатикодауны так дрочат на типизацию, только потому что им надо, чтоб компайлер слюни подтирал, так как моцк окончательно поплыл. Ради этого они готовы писать тонны быдлокода, но им не привыкать. Пока рубигоспода, кложабояре и эликсирабоги пошустричку пилят изящный выразительный прозрачный код, статикодауны пердолятся фабричками в тырпрайзе разгребая своё тайпед говно. Но в тырпрайзе скорость разработки не очень то важна, оценить простейший тикет на фичу, которая на каком нибудь пифоне пилится за два часа, в 3 дня, это ок.
>>738155На самом деле, если компилятор не будет выводить типы, то он не сможет проверить, правильную ли хуёвину ты пихаешь вон в ту переменную. Расширить это на полноценный вывод типов - дело техники и совсем не нагружает. Хакс, вон, типы выводит, делает кучку оптимизаций, и всё равно конпелирует быстрее goвна, компилятор которого форсят как очень быстрый.
>>738091Кстати, если не любишь динамическую типизацию, то почему пишешь на пайтоне?
Языки со статической типизацией и мощной системой типов (Haskell, Scala и пр.) > Языки с динамической типизацией > Остальные языки со статической типизацией
>>738159Ну так если >2016 год, хороший проц с SSD стоит почти копейкито чего плакать о какой-то там потерянной производительности из-за рантаймовых проверок>Только в совсем красивых закосах под динамику вроде свифта и скалы что-то замедляется.Наверное потому что только там вывод типов работает как в хацкиле более менее нормально. Но и в них он не всегда возможен, в скалке, например, нужно явно задавать что возвращает функция, если там рекурсия и вообще на рекурсивных типах. И ещё в некоторых других случаях.
>>738167Чота проиграл. У вас без монады файл не чтается, господин.
>>738167Ну вот это уже ближе к истине. Но хаскель и скала это пердолинг же, не?
>>738168Потому что компиляция – единичное действие. Рантаймовые проверки – то, что будет происходить на сервере/клиенте сотни тыщ раз.Эээ, блять, вы уж определитесь. То он хочет чтобы компилятор за ним слюни не подтирал, то он хочет чтобы компилятор ему весь рот обезвожил.
>>738171Именно там уже и начинается пердоленг с типами, когда ты должен писать ИМЕННО ЭТОТ тип, без кастов и прочего.
>>738169А мне норм (в скале вполне себе читается).>>738171Тут этот пердолинг в отличие от всяких джав себя окупает. Ведь в джаве максимум на который способен компилятор, это проверить, что ты дилды на строки не умножил. А в хаскеле в 95% случаев, если типы сошлись и программа скомпилировалась, то она работает как нужно.
>>738173>То он хочет чтобы компилятор за ним слюни не подтирал, то он хочет чтобы компилятор ему весь рот обезвожил.Где я такое писал? Нормальный вывод типов - это одна из тех вещей, которую нужно сделать, если ты выбираешь путь статики. Или всё превращается в говно и бойлерплейт. Если ты выбираешь динамику, всё это вообще НИНУЖНО. И это уже десятое дело что там в рантайме выводится/проверяется, код выглядит нормально и просто и читать/писать его быстро.>Рантаймовые проверки – то, что будет происходить на сервере/клиенте сотни тыщ раз.И каждый раз по 0.001 мкс. Вряд ли кто заметит, если это не хард риалтайм конечно. Но это уже другой разговор.
>>738179>говно и бойлерплейт. Эээх, я понел чому утебя любая статика = говно. Лан, удачи тебе.>И каждый раз по 0.001 мксИнтересно почему же никакой хайлоад не пишут на динамике (а ведь в вебе риалтайма никакого нету), даже с эрланга все съебали.
>>738183Манямирок, ясно.
>>738183Там где эрланг юзается, на производительность на одной машине как-то вообще похуй. И кто все? Демонваре, варгейминг, яху, амазон, вотсап, моторолла, жидхаб, башо, все по прежнему используют.
>>738183> никакой хайлоад не пишут на динамикеПишут и много.
2012:ХОЧИШЬ ЗАТРАЛИРОВАТЬ ДИНАМИЧЕСКИХ ПИТУШКОВ @ПИТУШКИ ПОД ШКАНАРЁМ У НИХ БАГИТ2016:ХОЧИШЬ ЗАТРАЛИРОВАТЬ ДИНАМИЧЕСКИХ ПИТУШКОВ @ТИПЯ КОРМЯТ ГАВНОМ ТЫ СЛИВАИШЬСЯ ИЗ СОБСТВИНАГА ТРЕДА
>>738210воу воу, я никого не траллел, но и не сливался никудаOP
>>738166Потому что на работке протащить Mypy я могу, а сказать "переписываем проект на Kotlin нахуй" не могу.
Динамическая типизация это частный случай статической, когда используется один тип. Например, на шарпе можно пользоваться исключительно object. Это все, что нужно знать для завершения дискуссии.
>>738216Приехали.
>>738216OCHE TOLSTOПопробуйте потоньше через некоторое время.
>>738217>>738225А что он не так сказал? Ну, разве что не object а class Object { public object o; }. Ну, и тип надо таскать с собой, то есть ещё будет public MY_CUSTOM_TYPE type;. В динамике это просто за тебя делается.
>>738210Дааа зекач не тот уже. Сплошной нюфак тред из залётных нюфань и тупых ремесленников с хабраподмывальни, и как вишнка на торте - самый популярный тред для отбитых дегенератов и школьников. Вот раньше в таких тредах рождались виновые пасты про тупиковую ветвь, белую высшую магию и десятиколёсные велосипеды. Мда, нет на вас Стасика с Братюней.
>>738227Все не так сказал.Во первых, динамическая типизация в шарпе - тип dynamic.Во вторых, шарп обоссыт тебя, и за дело, при операциях над object.static object Foo(object a, object b) { return a + b; ^Оператор "+" невозможно применить к операнду типа "object" и "object". }
>>738239А кто тебе сказал, что + будет работать? Ты это должен делать ручками, как-то так^static Object add(Object first, Object second) {if (first.type == MY_TYPE_INT && first.type == second.type) {var result = new Object();result.type = first.type;result.o = (int)first.o + (int)second.o;return result;} else throw new ArgumentException("shit happened"); // TODO: code for floats and shit}Понимаешь теперь, почему динамикоговнецо тормозит?
>>738243Пошел ты нахуй со своими костылями, вот что я хотел сказать.static dynamic Foo(dynamic a, dynamic b) { return a + b; }Все норм.Хочешь динамики - используй dynamic, блять.
>>738255>Например, на шарпе1. И как ты будешь dynamic использовать в языках, где его нет?2. И что он не так сказал?
>>738267>1. И как ты будешь dynamic использовать в языках, где его нет?Накостылять его всегда можно (как std::any или boost::variant в плюсах).>2. И что он не так сказал? Ему видимо припекло от того, что та реализация в рантайме не даёт оверхеда (лол).
>>738267> Например, на шарпе можно пользоваться исключительно object.Речь изначально про шарп была.
>>738239А тебе никто и не обещал, что плюс будет работать. Речь о динамической типизации, а не о реализации операторов и прочем сахарке. Как уже сказали, на крестах можно и операторы заделать как в питоне.
>>738255>Хочешь динамики - используй dynamicКостыли-костылики. Легче уж воспользоваться нормальным высокоуровневым языком с динамической типизацией.
Посоны я вам еще "достоинств" статической типизации принес. https://spin.atomicobject.com/2016/04/26/swift-long-compile-time/Проблема была в выходе типов и была пофикшена всего-то за пол-годика. Вот только где еще могут поджидать такие сюрпризы.
>>738275> А тебе никто и не обещал, что %thing_name% будет работать. Речь о динамической типизации, а не о реализации %thing_name% и прочем сахарке.
>>738282А на твоей динамикопараше даже гуйня на айфончиках лагала бы, это из достоинств динамикодристни.
>>738282И фиксится это меньше чем в 20 символов, если чо.
>>738283И че? Че ты сейчас сказал? Может тебе еще и группировку инструкций по отступам зделоть на статических типах? Или if __name__ == "__main__" вместо static int Main(string[] args)?Типиация не имеет никакого отношения к этой мишуре. Учись думать в более абстрактных понятиях, чем хеллоуворды.
>>738285Вон в Forth вообще типов нет, а работает быстро как Сишка.
>>7382701. А в языках, в которых нельзя накостылять? А чем твоё костыляние отличается от моего Object?2. Нихуя не понял. Что не даёт оверхеда?>>738271>Например, на шарпе>Например>Например>Например>Например>Например>Например, блядь
>>738290В ассемблере их тоже нет, но в твоей динамикопараше они просто завуалированы, ибо это не очередной древний ассемблер как этот форт.
>>738292>А в языках, в которых нельзя накостылять? А ты много таких знаешь? Я вот ни одного.>Нихуя не понял. Что не даёт оверхеда?Тебе о проффесии грузчика стоит задуматься, если ты даже прочитать не в состоянии.
>>738288> операторы мишураА теперь небольшой тест.> string + int = ?> int + MyClass = ?> Class1 + Class2 = ?> dynamic + dynamic = ?В динамикодрисне есть == и === и ты мне тут кудахчешь что операторы это мишура.
>>738286>И фиксится это меньше чем в 20 символов, если чо.Пока динамический петушок наговнякал уже десяток прототипов, статиколорды ждут полгода заветных 20 символов чтобы не ждать благословение компилятора несколько часов после каждого крошечного изменения.
>>738309> статиколорды ждут полгода заветных 20 символовПолгода был фикс на вывод типов. Всей этой лажи можно избежать указав тип явно (те самые 20 символов).
>>738309>чтобы не ждать благословение компилятора несколько часов после каждого крошечного изменения. Сразу видно динамиколорда, пишушего тесты быстрее чем код.
>>738303>А ты много таких знаешь? В мире тысячи языков. Можно будет найти игрушку, в которой этого не сделать. И не надо говорить про не используй, потому что никто на статическом языке не будет реализовывать динамикопарашу с нуля энивей. Второй вопрос всё ещё в силе.>Тебе о проффесии грузчика стоит Мой вопрос из 2) в >>738267 в точности повторял мой вопрос >>738227. "Он" там относилось к >>738216. Как видишь, "ему" в посте >>738216 не "припекло", и ничего про реализацию в рантайме или оверхед там сказано не было. Так, может быть, в грузчики всё-таки тебе?
>>738319>Можно будет найти игрушку, в которой этого не сделать.>Так, может быть, в грузчики всё-таки тебе? Мдэ, с кем я блять один сосач делю. Ну ты всё же обдумай предложение, грузчики ныне поперспективнее.
>>738297>завуалированыВот и правильно, зачем языку вываливать все эти ненужные кишки в код, ещё и заставлять пердолиться с ними?
Как написал один питушок в треде где срали на ЖС, неумение увидеть сарказм - диагноз.
>>738285ObjC - динамикодрисня, кстати. Если ты не знал.
>>738324Давай-ка конкретнее, а то я тоже могу написать "ясно" и "слив защитан". И это будет даже более аргументированно, чем у тебя, ибо ни на один вопрос ты не ответил.
>>738314>указав тип явноТо есть всё таки не работает ваша эта протиопердолная параша?
>>738325Чтобы писать код, а не тесты на каждое сложение, проверитяя как строку или инт он твой "ахуенный" инструмент там сложил.
>>738328Я тебе уже написал >>738326
>>738317Будто статикодауны не пишут тесты, лол.
>>738327Там только методы в рантайме вычисляются, не сравнивай хуй с пальцем.Свифт точно такой же.
>>738330Зачем проверять то, что заведомо известно что работает? Я же не статикодаун доказывать тайпчекеру очевидные вещи.
>>738332На логику - да, на каждый выпук как динамикодебилы - нет.
>>738335Манямирок, ясно.
>>738330Лисп вон динамическитипизированный, но подобные ошибки отлавливает ещё на стадии компиляции. ЧЯДНТ?
>>738333Пфф... ну в питоне тоже "только методы в рантайме вычисляются"
>>738334У тебя табуляция, ой, четыре пробела слетели.
>>738305Ну как напишешь, так и будет. В жс написали так, в питоне этак, в твоем языке будет string + int = bool. Это неважно, понимаешь? Важно что статическая типизация это дополнительная возможность, которой в динамических языках нет. Поэтому они отсталые. А нахерачить операторов везде можно.
>>738340Ты ебанутый немножко походу. В обж-с вычисляются только адреса методов, в динамике - вообще все типы, а большинство динамикопараши и интерпритируется там же.
>>738341Любое IDE/блокнотик с обвесом это проверяет. Более того, при первом же запуске этот код вылетит, как и с обычным асертом.
>>738344>В обж-с вычисляются только адреса методовТы почитай, как там объектная система реализована. Всё в рантайме происходит, он не более статически типизирован, чем смолтолк.>интерпритируетсяКак там в 80х?
>>738344Вычисляются они только по мере использования.
>>738331И где тут, блядь, сарказм?>Ему видимо припекло от того, что та реализация в рантайме не даёт оверхеда (лол).Вот это? Ты знаешь вообще, что такое сарказм, или просто слово нравится? Это предложение не имеет смысла, пока ты не задефайнишь "ему" и "та реализация". А на первое претендуют минимум два человека, на второе, по-моему (лень крутить вверх), четыре реализации. Это, блядь, даже простой шуткой быть не может, потому что у даже шутки должна быть какая-то смысловая нагрузка.Я уж промолчу о том, что ты требуешь детектить сарказм через текст, когда ни интонаций нихуя не передаётся.
>>738346>Ты почитай, как там объектная система реализована. Всё в рантайме происходит, он не более статически типизирован, чем смолтолк.На уровне с Си, всё нормально.>Как там в 80х? Как тебе в 2016, когда из динамических компилируемых языков есть 1,5 лиспонедобитков?
>>738348Боже, как же дебила порвало. Ахуеть.
>>738348Приоткрою тебе завесу тайны: костыли через object не дали бы оверхеда в рантайме, в отличии фигни с dynamic. Это была слишком тонкая и смишная для тебя шютка о пукане динамикопитушка.Тебе легче?
>>738349>На уровне с СиНет, не на уровне. Объектная система там отдельным слоем, и фактически в статике она не типизирована.>когда из динамических компилируемых языков есть 1,5 лиспонедобитковНазови хоть один интерпретируемый.>>738344Алсо, в питухоне типы так же, как и в обжси, не "вычисляются" (что ты под этим вообще подразумеваешь?). Утиная типизация же.
>>738350>порвалоБлядь. Ну сколько раз я тебе говорил, чтобы ты сразу это писал, и я на тебя времени не тратил.>>738351А проверка типов через кучу ifов - это не оверхед? А вызов функции, да ещё и с выделением памяти вместо примитивной операции - это не оверхэд. Господи, вот уж действительно "с кем я блять один сосач делю". Вы устроили всю эту хуйню, вместо того, чтобы сразу сказать "я дебил, не отвечай мне" - легче ли мне теперь, как думаешь?
Короче, статикодауны вместо того, чтобы взять простой прозрачный инструмент и решить задачу уже сегодня, делают 2 вещи:либо пишут горы уёбищного бойлерплейта и маразма из GoF либо прибегают к сильным колдунствам типа метапрограммирования, вывода типов, типов высших порядков и прочей срани, которая на примере скалы замедляет время компиляции, ещё и умудрятся тормозить в рантаймеЧто характерно ни первое, ни второе не отменяет написания тестов/обширной документации.
>>738360В ocaml типы никто явно не указывает, компилируется быстро, код на выходе достаточно эффективный.
>>738361Типадроч заменена на модуледрочь.
>>738363Лол что? Как по-твоему одно заменяет другое?
>>738355>Назови хоть один интерпретируемый.От питона до жса. Да, можно запустить в жит компиляторе, кококо, только это полумеры поддерживаемые 1.5 челиками из сообщества.>что ты под этим вообще подразумеваешь?Получение адреса конкретной реализации ф-ии.>>738356>А проверка типов через кучу ifов - это не оверхед?А dynamic по твоему по другому работает? Разница в том, что там дефакто этих проверок будет куда больше.
>>738360>ещё и умудрятся тормозить в рантаймеПруфани-ка.
>>738365>От питона до жса.Они не интерпретируемые.>только это полумеры поддерживаемые 1.5 челиками из сообществаЩиииито?>>738365>Получение адреса конкретной реализации ф-ии.Тогда ты сам себе противоречишь.
>>738366А, как пример взяли скалу, я понел. Кусок говна вместо компилятора который не умеет разворачивать абстракции - отличный пример.
>>738369Свифтовый компилер такое же говёный.
>>738368>Они не интерпретируемые.Чота интересно стало. Давай-ка поподробнее.
>>738364В окамле своё понимание модульного программирования. Типы высших порядков заменены на модули высших порядков.
>>738371Ему полторы года от роду, судя по гениальным багам вроде зависаний на выводе типов - там не много специалистов в этой области работает. Компилятору скалы - десяток, и даже Одерски обосрался и переписывает его с нуля.
>>738372Они в машинный код компилируются. Про v8 не слышал или просто не знаешь, что значит "интерпретируемый"?
>>738380Ого, один язык из списка вычеркнул, нихуя себе. Ладно, про жс спорить не буду хотя судя по бенчмаркам ему и компиляция не помогла, про остальные скриптовые языки покровы сорвёшь?
>>738374Там просто ад-хоц полиморфизма нет (ну, если не считать объектной системы), поэтому активно используются модули.>В окамле своё понимание модульного программирования.Своё? Чем же оно отличается от общепринятого? Конечно, мало где есть модули как первокласные объекты, но принципа это не меняет.
>>738380А пистон конпелируется в байткод. Так что интерпретируемые - это только те, которые интерпретируют по дереву/сорцу.Теперь давайте скажем, что х86 опкоды (да, любые, на самом деле, просто тут ещё один слой) интерпретируются железом, поэтому все языки интерпретируемые, и в этом треде станет совсем хорошо.
>>738384Не пойму, ты шлангом прикидываешься или правда не знаешь, что интерпретируемых языков уже практически нет?
>>738389Байткод не интерпретируется, а транслируется в машинный код.
>>738384>хотя судя по бенчмаркам ему и компиляция не помоглаАга, то-то уже вовсю игори в браузере гоняют.
Why not?>>738394Ну а машинный код интрепретируется железом. А в случае х86 семейства - дважды. Кресты - дважды интерпретируемый язык!
>>738361Работает на одном ядре, однотредовый мусоросборщик. Да и вообще идиоматичный код на Окамл сосёт не разгибаясь, чтоб получить приемлемую производительности нужно писать фортраноподобную говнолапшу. Вообще Окамл очень плох, тайпклассов нет, всё через модули - лютый пердолинг. Если уж выбираешь МОЩНЫЕ СИСТЕМЫ ТИПОВ, то бери уже цацкиль, и не еби мозги.
>>738390Я постоянно работаю с раби/питон/луа/баш, кек скриптам, точнее сказать любое окружение разработчика просто кишит ими, и все поставляются в виде исходников. Но я наверно тупой, и между трансляцией в байткод, с последующей трансляцией в маш. код и интерпритацией слишком много разницы.
>>738397Такие игори и на питоне не лагали бы.Стандартный джентельменский набор поссыкулек на v8:http://benchmarksgame.alioth.debian.org/u64q/javascript.htmlhttps://www.techempower.com/benchmarks/>>738399>чтоб получить приемлемую производительности нужно писать фортраноподобную говнолапшу.Как и везде.
>>738399>Работает на одном ядре, однотредовый мусоросборщик. lwt, fork>Да и вообще идиоматичный код на Окамл сосёт не разгибаясьНу, нет. Сам окамл такой, что идиоматичный код на нем выглядит как помесь хаскеля и фортаноподобной параши.>Вообще Окамл очень плохЕсли присмотреться получше, то оказывается вполне ничего. Просто не надо смотреть на него как хаскель, это совсем другой язык.>тайпклассов нетКак показывает практика, тайпклассы в окамле не нужны. В случае действительной необходимости используется ООП, которое таки неплохо встроено в систему типов.>Если уж выбираешь МОЩНЫЕ СИСТЕМЫ ТИПОВ, то бери уже цацкиль, и не еби мозги.Хаскель непрактичен. Слишком много типо-, монадо- и прочего алгербродрочерства сомнительной полезности.>лютый пердолингЛол, человек, который советует хаскель, рассказывает про лютый пердолинг.
>>738403UT? Да на питоне? И чтоб не лагал?
>>738419На каком нибудь жит компиляторе питона сделать не проблема, правда нахуя? (то же относится и к жс-версии).
>>738420>не проблемаТы в этом уверен? Насколько мне известно, питуханы так и не сумели запилить нормальный компилятор. Пока самые нормальные у жс, луа, лиспа
>>738425Ну, есть cython и pypy. На них, правда, хорошо, если половина питоньего кода работает, но ЗДЕЛАТЬ-то МОЖНА. А cython - это практически сишка с нескучным синтаксисом, поэтому там и работать должно хорошо.
>>738425А насколько мне известно, в то время когда эта игра вышла (если я правильно понял и ты о Unreal Tournament), то не было ни шейдеров, ни видеокарт (у массовых потребителей конечно), всё считалось на CPU (!!! блядь). Ещё есть что сказать?
>>738428О каком именно ты анрилтоурнаменте? Потому что тот, о котором я говорю, в 2008-9 неслабо так притормаживал на моем железе (P4 630 или 640 и asus x1600)
>>738430Ну скинь его, я нихуя не нашёл.
>>738104>>738090>>737997Ммм, как же я обожаю слушать тыльный треск динамических даунов. А особенно - ВОЗРАЖЕНИЯ, которые в качестве примера динамической дрисни приводят РАБОЧИЙ И СОВСЕМ НЕ ДЛИННЫЙ код, на отладку которого были потрачены десятки макакочасов, а в качестве примера статики - хэллоуворлды-оксюмороны, написанные за двадцать лет до внедрения вывода типов во все приличные языки. auto duck = new {}? НЕЕЕЕТ, ВЫ ВСЕ ВРЕЕЕЕЕОООООТИ, КРЕСТЫ СОСУТ, МАМ СКАЖИ ИМ(((((((((
>>738439>КРЕСТЫ СОСУТпришло время напомнить
>>738453Стандартный быстрый код.
>>738455___что ты_ ____несешь еб___нуты_й?
>>738458А чо так многа приватных методов? Ща погодь код интерпритируется.
>>737921 (OP)Профит в том, что есть обезьяны, которым сложно осознать такое понятие, как тип данных.
>>738467Почему програмистишки такие высокомерные мрази? Нихуя же ведь вообще не знает чудик а лезет со своим охуительное весомым мнением.
>>738472Начинающие, лет через 5-10 это проходит.
В треде пробздетый дизайнер языков программирования, задавайте свои ответы.
>>738498Как определить идеальность синтаксиса?У какого языка синтаксис самый идеальный?
>>738502У лиспа
>>738512)))))))
>>738365> А dynamic по твоему по другому работает? Разница в том, что там дефакто этих проверок будет куда больше. У тебя за щекой проверок дефакто будет больше. dynamic ведет себя также как и object, с той лишь разницей что компилятор не будет ебать мозг.static dynamic AddD(dynamic a, dynamic b) { if(a is int && b is int) return a + b; throw new NotSupportedException(); }static object AddO(object a, object b) { if (a is int && b is int) return (int)a + (int)b; throw new NotSupportedException(); }
>>738537>dynamic ведет себя также как и objectПРООРАЛ НА ВСЮ КОМНАТУ С ДОЛБАЕБА
>>738552Поясни, в чем он неправ.
>>738552https://msdn.microsoft.com/ru-ru/library/dd264741.aspx> Как часть процесса, переменные типа dynamic компилируются в переменные типа object.Поэтому тип dynamic существует только во время компиляции, но не во время выполнения.И тут ты идешь на парашу.
>>738552По сути все правильно написал, вы бы, блядь, хоть clr via c# для приличия почитали.
>>737921 (OP)>кроме того, что вместо нескольких одинаковых функций под разные типы аргументов, пишешь одну и передаешь в нее все, что хочешь? Это здорово конечно, но в реальной жизни это же нахуй не нужно.ты сейчас огребёшь и от статикоёбов с их шаблонами и утиной типизацией
>>738577>утиная типизация>2016
>>738502>Как определить идеальность синтаксиса?Syntax_coolness = expressivity / readability, где 0 <= readability <= 1, 0 - не читается, 1 - читается идеально.>У какого языка синтаксис самый идеальный?Такого, чтобы самый? Гвидон/Говно классные, например.
>>738587Разве критерий читаемости не выводится из понимания читателем концепции и архитектуры языка?Например, человеку который умеет только go, будет невыносимо понять js, и наоборот.Но тому, кто хорошо знает оба языка, будет вполне понятны и читаемы оба.
>>738593Ну вот по тебе сразу видно, что у тебя совершенно нет опыта коммерческой разработке. Есть языки совершенно невыразительные, но очень хорошо читаемые на codebase scale (вроде Go). Есть очень выразительные, но нечитабельные (вроде хаскелля, хехе). Есть те, которые посредине — как питон, например. Но прикол в том, что у них у всех есть трейдоффы. Синтаксис — это только третья часть охуенности языка, еще ооочень сильно решает парадигматика, инструментарий и комьюнити.
>>738579Утиная типизация, как это реализовано в Go - это лучшее, что может быть, ящитаю.
>>738595>буква я последняя в русском алфавите>ну вот по тебе сразу видно, что ты не понимаешь ничего об алфавитах. есть алфавиты, в которых вообще нет буквы я, а так же есть те, в которых количество букв больше чем нужно, а в некоторых очень мало. помимо количества букв и их порядка, еще важны такие вещи как....Я тебе написал про критерий - читаемость.Критерий читаемость - это субъективность.Это как с иероглифами и буквами. Выразительность о том же. >это только третья часть охуенности языка, еще ооочень сильно решает парадигматика, инструментарий и комьюнити.Я тебе писал, про читаемость.И о том, что это субъективное понятие. >нечитабельные вроде хаскелляХаскелистам удобно. А тебе может быть не очень. Это субъективное, понимаешь?
>>738597Так там её нету, она только в яве осталась, лол.
>>738498> В треде пробздетый дизайнер языков программирования, задавайте свои ответы. Почему все языки такое говно? Почему только гуглоидам пришло в голову сделать нормальную поддержку легких потоков (но в языке, где весь остальной дизайн ужасен)?Вообще, почему в каждом языке есть какой-то набор фич, но он не перекрывает все, что нужно каждый день? Это же все на поверхности, нет блять надо сделать какое-то очередное субоптимальное решение и добавить туда какую-нибудь хуиту?
>>738472>Почему програмистишки такие высокомерные мрази? Нихуя же ведь вообще не знает чудик а лезет со своим охуительное весомым мнением.Потому что только никчемная мразь может программировать на на языке с динамической типизацией вроде JS или PHP (там типы есть но почти никто их не указывает).
>>738611Аргументация уровня б.
>>738610>почему только гуглоидам пришло в голову сделать нормальную поддержку легких потоков>только гуглоидамМальчик, да ты совсем не в теме. А ничего, что go - развитие limbo или скорее просто переупаковка в другой фантик, который к гуглу никакого отношение не имеет. Это уж не говоря об эрлангах, хаскелях, схемах и прочих.
>>738169>без монады файл не чтаетсяunsafePerformIO to the rescue!
>>738176>А в хаскеле в 95% случаев, если типы сошлись и программа скомпилировалась, то она работает как нужно.А потом мамка зовет тебя жрать борщ.
>>738176>то она работает как нужноТолько адово тормозит из-за ленивости, и нужно в нее пару дней тыкать для оптимизации.
>>738179>если это не хард риалтайм конечноДля хард риалтайм самое главное, не точ, что 0,001 мало, а то, что оно будет каждый раз независимо ни от чего - ни от кэша, ни от TLB, ни от DRAM. Поэтому там лучше момедленне, но гарантированно.
>>738746>тормозит из-за ленивостиЧтож такое просто блядь тред охуительных историй, то dynamic у них работает без оверхеда, то это, просто охуеть>>738749Формально это так, но довольно странно если бы риалтайм система над каждым пуком призадумывалась.
>>738176Ну попизди мне тут, с пропущенным паттерном легче выстрелить себе в ногу, чем даже в сишке.
>>738628>Мальчик, да ты совсем не в теме. А ничего, что go - развитие кококо или скорее просто переупаковка в другой фантик, который к гуглу никакого отношение не имеет. Это уж не говоря об кокококо, кокококо, кокококо и прочих. Кто все эти люди? На все эти языки приходится проектов десять, которые кто-то знает, восемь из которых на Хаскель.Я говорил о языках, имеющих хоть какой-то impact а не о эзотерической ебале вроде Хаскеля.
>>738791Ну, на лимбо и правда мало проектов вот ведь чудеса маркетинга: был никому ненужный язык, а стал... гм, нет, таки не стал, а про остальные ты лукавишь. Тот же энларг ё бенис довольно часто применяется в продуктионе.
>>738176>в хаскеле в 95% случаев, если типы сошлись и программа скомпилировалась, то она работает как нужно. Абстрактные рассуждения сферического коня. Я это слышу лет десять про Хаскель.Никакой нормальный человек не станет по пол часа втыкать в какую-нибудь pointfree-хуйню с десятью точками и пятнадцатьюзнаками $. Хаскелисты не могут читать чужой код без бумажки, если ты не знал, да и свой в половине случаев не могут, если написано более н месяцев назад. Пока ты будешь сражаться со своим компилятором, любая макака уже создаст рабочий продукт, возможно, он будет чуть менее корректным в плане типов, зато он будет работать. Хотя лично тебе это не грозит, т.к. ты просто скопировал первый аргумент из любого Haskel-срача, ничтожество.
>>738802>вот ведь чудеса маркетинга: был никому ненужный язык, а стал... гм, нет, таки не стал, Я хз что за Лимбо, но в Go рантайме многое было прооптимизировано уже много позже выхода даже 1 версии и сейчас этот процесс в самом разгаре. Go используют не из-за синтаксиса, удобства или крутого дизайна или чего-то еще, а исключительно из-за рантайма, оптимизированного на перформенс.> Тот же энларг ё бенис довольно часто применяется в продуктионе.Довольно часто для никому ненужного недо-ФП-высера. GO, которому в 6 раз меньше лет, применяется раз в 6(несколько нулей) чаще.
Если бы вы решили писать универсальную расширяемую среду (своего рода DE), в которой не было бы понятия программы, а весь функционал реализовывался через разделяемые модули\классы\объекты. И весь рантайм должен бы был быть доступен, примерно как девтулс в браузере, но по отношению ко всей системе сразу.Какой бы язык вы бы выбрали за основу?
>>738803>Я это слышу лет десять про Хаскель.За это время мог бы уже и попробовать, но нет, надо продолжать защиту своего манямирка выдумывая очередное оправдание.>Никакой нормальный человек не станет по пол часа втыкать в какую-нибудь pointfree-хуйню с десятью точками и пятнадцатьюзнаками $.И писать тоже. Наговнокодить можно на любом языке.>Пока ты будешь сражаться со своим компилятором, любая макакабудет сражаться со своим рантаймом. В первом случае хотя бы очевиден источник проблемы, а во втором ещё предстоит провести расследование
>>738805>многое было прооптимизированоКому мне отдать мои 9.99$?
>>738805>GO, которому в 6 раз меньше лет, применяется раз в 6(несколько нулей) чаще.А nodejs ещё чаще. О чем это говорит?
>>738806Ты там смолтолк переизобретаешь что ли? Ты опоздал лет на 40
>>738809> За это время мог бы уже и попробовать, но нет, надо продолжать защиту своего манямирка выдумывая очередное оправдание.Пробовал, не понравилось. Слишком большой челендж в самом освоении языка, чего в императивных не помню.> И писать тоже. Наговнокодить можно на любом языке.Такой код встречается (и часто) в каноничных тутах вроде learn you a haskell и в каждой первой хаскельной либе.
>>738818activex спустя 15 лет взлетел же?Все новое, это хорошо забытое старое, в новой упаковке.
>>738814> А nodejs ещё чаще. О чем это говорит? О том, что он подходит для разработки больше Эрланга, хотя он полнейшее говно.Если ты про то, что Нода применяется чаще Го, то у нее историческая фора и много фронтенд-макак, думающих, что им будет проще притащить свой вонючий JS на сервер сайд, чем учить новый язык вроде Go. NodeJs - это полный отстой, даже хуже PHP.
>>738821>Пробовал, не понравилось. Слишком большой челендж в самом освоении языка, чего в императивных не помню.Не осилил, значит. Ну, коль мозги заржавели, уже ничем тебе не поможешь.Студентота его более-менее осваивает за пол-семестра.>Такой код встречается (и часто) в каноничных тутах вроде learn you a haskell и в каждой первой хаскельной либе.Ну и что? Это не дает тебе писать нормальный код или использовать нормальные библиотеки?
>>738823Что-что? Когда это активикс взлететь успел?
>>738826node-webkit
>>738825>Студентота его более-менее осваивает за пол-семестра.А потом пишет диссертации о том, как сделать то, что на императивных языках давно написано, в виде какой-нибудь реактивной поеботы. Все довольны - гранты пилятся, борщ готовится, индустрии похуй.
>>738838Ой темнота. Ну заржавели мозги - смирись. Но зачем чушь-то нести, если не смог разобраться?
>>738824Вот то же самое и с го и эрлангом. Макаки думают, что новомодная сишка с потоками (да ещё и от гуголя! и с """""""множественными""""""" ОПТИМИЗАЦИЯМИ рантайма!) будет проще и лучше в освоении и использовании, чем странный язык со страшным ФП от какой-то неизвестной компании (фууу, дизлойс).
>>738824На самом-то деле серверная сторона любое говно стерпит (и жаву, и жс, и го, и даже, прости господи, пхп), поэтому оценивать качество по частоте применения бессмысленно.
>>738840Нормально у меня все с мозгами. У хаскеля сама концепция в корне не верна, отсюда и проблемы с продакшеном.
>>738862В чем неверна? И что по-твоему верно?>Нормально у меня все с мозгами.Ты ж сам выше говорил, что не осилил.
>>738867Это не я говорил. Спать охота, завтра расскажу, если дойду.
>>738873Вот тебе немного пищи для размышления: http://elm-lang.org/examples/marioВидишь, насколько прозрачным позволяет делать код реактивщина?
>>737958>Динамическая типизация позволяет разбивать программу на полностью независимые модули. Каждый из которых может быть написан и откомпилирован полностью независимо от других.
Два слова: меньше писанины.
>>737921 (OP)Да незачем, это хайп для даунов. Динамический кал сосёт просто во всём.
>>737958> Динамическая типизация позволяет разбивать программу на полностью независимые модули. Каждый из которых может быть написан и откомпилирован полностью независимо от других. Проиграл. При чём здесь динамичная типизация к модульности?> Тогда как для реализации статического контроля при компиляции одного модуля тебе нужна определенная инфа от всех других модулей которые он использует (В С, например, это хедеры). И внесение даже минимальных изменений в один из модулей (поменял тип одной переменной с float на double) требует полной перекомпиляции всех зависимых модулей.Хуйню несёшь даун. Про JVM слышал что-нибудь? > Также динамическая типизация немного упрощает разработку - динамическая макака просто высирает код,При этом поддерживать это говно становится невозможно.
>>737921 (OP)> Для чего она вообще?Чтобы быдлу было проще писать свои говноскрипты и сайты-визитки.Любой уважающий себя программист не будет писать на яыке, не имеющем сторогой статической типизации, вывода типов и параметрического полиморфизма (хотя бы на уровне generic'ов).
>>738605>Хаскелистам удобноДа нихуя им не удобно, просто они имеют желание разбираться. Про апл тоже можно сказать, что программистам на нём удобно, а тем временем есть знаменитая фраза о том, как какой-то там профессор четыре часа разбирался, что делает функция из то ли пяти, то ли десяти символов.>>738806Кресты, а окружающее говно на скриптах. Что-нибудь быстрое, типа ангел/джава-скрипта или луижида (но у луи просто уёбищный синтаксис, поэтому о ней я бы дважды подумал)
>>738806Scala ясен хуй
итт
>>738806C++/Qt + Python
>>737956>Ну как запись int i =0 вместо i=0 помогает лучше сконцентрироваться на алгоритме?Объясняю на пальцах - тебе не надо знать границы интов, при превышении инт автоматом превратится в BigInteger ровно с теми же операциями, что и обычный int.
>>738806Common Lisp
>>738825>Студентота его более-менее осваивает за пол-семестра.Осваивает? Плавали, знаем, максимум, что делает студентота - это задачки на перестановку элементов списка.> Не осилил, значит. Ну, коль мозги заржавели, уже ничем тебе не поможешь.Не хватило мотивации. Так и не нашел причин, которые бы заставили использовать какое-то замудреное говно там, где на нормальных языках и думать особо не надо. Излишняя сложность - не всегда синоним мощи или вообще чего-то хорошего, пора бы уже это понять.
>>738879> http://elm-lang.org/examples/mario>Видишь, насколько прозрачным позволяет делать код реактивщина? Вижу, как из-за использования какой-то мутной поеботы, сравнительно простая страница весит 205кб и состоит из более чем 6к строк. Конечно, это в сгенеренном виде, но это просто пиздец, на мой скромный взгляд.
>>737921 (OP)Динамическая типизация иногда удобно. Особенно при обработке всякого входного говна, когда тебе надо '', false, 0, ' ' и прочее странное говно превратить в одно четкое значение.В остальное время динамическая типизация – крайне хуевая, неудобная поебота, из-за чего в IDE сложно понять, что у конкретного объекта есть, какие у него методы и.т.д..Самая лучшая типизация сейчас в:- PHP- TypeScriptИ в том и в другом языке ты большую часть кода пишешь со статической типизацией (в пхп тайпхинты, ретурн статементы, пхп-доки и.т.д..), но когда тебе надо, легко переключаешься на динамику. В тс тоже статика дело добровольное.Полыхайте.
>>739026Тайпхинты в пыхе это не типизация, маня, они работают как обычные ассерты и проверка идёт в рантайме. Это просто такой костыль чтоб сделать что-то типа сильной типизации. Пхпдоки это вообще относится к документации, а не к коду, интерпретатору на них вообще похуй.
>>739035> Тайпхинты в пыхе это не типизация, маня, они работают как обычные ассерты и проверка идёт в рантайме.Мань, пхп это язык про рантайм.
>>739036В пыхе нет типизации.
>>739036> пхп это язык
>>739026> Динамическая типизация иногда удобно. Особенно при обработке всякого входного говна, когда тебе надо '', false, 0, ' ' и прочее странное говно превратить в одно четкое значение.И это программисты. Computer Science дала им ООП, наследуй, используй полиморфизм! Не хочу, хочу жрать скриптоговно.
>>739043Пиши фабрики фабрик сука! Вот как, блядь, нужно писать, SimpleBeanFactoryAwareAspectInstanceFactory, быстро. Быстро. EntityManagerBeanDefinitionRegisterPostProc Раз-раз! Пиши, пиши, пи-и-и-ши-чиж-чж-чижь! Пиши! Говно! Пиши!
>>739053Лучше изучать грамотный код, написанный с применением всех паттернов, с грамотной архитектурой и схемами на UML, чем помойку из скриптов. Последнее куда ближе к чистке нужника столовым прибором.
>>739056Эти самооправдания Раджеша.
>>739058Проголодался наверное? Я тебе покушать принес.
>>739056Но статическая ООП параша - инструмент тырпрайз рабов и переквалифицированных таксистов-вкатывальщиков в бодишопы. Динамически типизированная функциональщина с элементами метапрограммирования - инструмент прогрессивных программистов. Так то
>>739062Ух какой ты щутниг. Бугагага, бугагага.
>>739064> инструмент прогрессивных программистоввесь день пишут динамически типизируемый код, а на перерывах долбятся под хвост
>>739064динамическая типизация != динамические языки
>>739064Это похапешники штоле прогрессивные программисты?
>>739064> Динамически типизированная функциональщина с элементами метапрограммированияЛиспошкольник, так и скажи, что ты не осилил Хаскель.
>>737932>Кстати, анон когда-нибудь встречал скрипты со статической типизацией?golang
>>739106Ну зачем ты так, Golang не скриптовый язык.
>>737932> Кстати, анон когда-нибудь встречал скрипты со статической типизацией?TypeScript, Groovy
>>739022Не туда ты смотришь. Elm пока не умеет не включать в результирующий жс лишний код, но к реактивщине это отношения не имеет.
>>738072То-то все паттерны заодно с юнит-тестами пришли из динамической параши (SmallTalk), а в статических компилируемых языках долгое время успешно обходились без них.
>>739013В чистом хаскеле без алгебраических изъебств нет никакой излишней сложности, наоборот даже, всё намного проще, чем в какой-нибудь низкоуровневой императивщине типа явы или крестов. Но есть непривычность, да.
>>739139Те паттерны, что пришли из смолтолка, практически никакого отношения не имеют с жавовскими.
>>739135>Не туда ты смотришь. Elm пока не умеет не включать в результирующий жс лишний код, но к реактивщине это отношения не имеет. Я блять смотрю туда, куда мне надо. Меня не особо интересует какой-то игрушечный код, который оказывается транслируется в жирный кусок говна. "пока не умеет" - ну, когда научится, тогда и поговорим.Продебажить эту хуйню будет просто нереально, соответственно, она красивая только в теории.
>>739193Жирная там библиотека элма, а конкретно тот код транслируется в сравнимый по объему жс. Работает он довольно шустро, можешь нагуглить бенчмарки, где elm делает react на ебле с dom.>Продебажить эту хуйню будет просто нереальноС чего ты взял?Отлаживается всё это дело довольно легко, в большинстве случаев даже не приходится прибегать к отладчику, потому что код довольно прозрачный.Помоему, ты просто уперся как баран и всеми силами пытаешься найти хоть какой-то недостаток, лишь бы не допустить мысли, что ненавистное тебе фп с этими страшными реактивностями может оказаться лучше того, на что ты там дрочишь.
>>738879Игра про марио была выпущена для процессора 6502 в 1985 году. К 2016 году функциональщики написали достаточное количество диссертаций, чтобы сделать тормозной хелловорлд с якобы прозрачным кодом - с точки зрения писателей этих диссертаций.Когда они напишут что-то уровня майнкрафта, императивщики построят цивилизацию типа II. Это как раз иллюстрация к моему посту >>738838 , так что не знаю, что ты хотел этим доказать.
>>739304Ты, видимо, из тех людей, что против прогресса, потому что он им не по зубам: всю жизнь отверткой шурупы вкручивали, и зачем эти шуруповерты? всю жизнь на ассемблере писали, и зачем эта сишка? всю жизнь на сишке писали, и зачем эти высокоуровневые языки? всю жизнь на жс с жквери писали, и зачем эти иммутабельные структуры данных, реактивщина и прочее ФП?
>>739304>тормознойОй, не пизди. Уж мне, с моим-то калькулятором на некро-атоме, виднее: что тормозное, а что нет.
>>739319Функциональщина существует с 1958 года. За это время в императивном программировании прогресс шагнул семимильными шагами, борщехлебы же продолжают использовать скобочки, в крайнем случае ML-говно (1973 года, т.е. ровесник паскаля).
>>739319Хаскелеебы уже много лет убеждают в том, что хаскель - это прогресс (из ряда - ассемблер-фортран-си), но так и не представили доказательств этого. Есть только унылый троллинг и обвинение других в их непродвинутости. Это напоминает марксистов, у которых ряд продвинутости идет как рабовладение-феодализм-капитализм-коммунизм. И никак иначе.Где ты видишь прогресс? Марио в 2016 - это не прогресс, марио 30 лет назад был написан.
>>739325Попроси мамку меньше мяса в борщ класть, может накопишь на нормальный пека.
>>739319>функциоанальщики изобрели колесо>когда все остальные уже полетели в космос>прогресс не остановить>ещё чуть-чуть>ёбаные ретрограды
>>739319>зачем эти иммутабельные структуры данныхНу если нравятся иммутабельные структуры данных, открой блокнот и сиди дрочи на него. Вот тебе и иммутабельная структура, лось. Кстати, как дополнительный бонус, работать с ней можно и в параллельном окружении не задумываясь о дедлоках и прочем, даже никак не изменяя принцип работы.
>>739330>За это время в императивном программировании прогресс шагнул семимильными шагамиЛол, например?
>>739445Мог бы и что-нибудь поумнее придумать.>>739342>функциоанальщики изобрели колесоПока императивщики продолжают катать квадратное.>когда все остальные уже полетели в космосЭто ты что с полетом в космос сравниваешь? Те раздутые, жирные глыбы кода, что за полвека научились выводить текст и картинки на экран но с много большей требовательностью к ресурсам?>>739338Ок.>>739335Те, кто мог, преимущества увидел и перетащил в свой язык/библиотеку. Возможно, что даже ты пользовался достижениями функциональщиков, если хоть раз в жизни писал код.>Марио в 2016 - это не прогресс,Ну это уже слишком толсто. Какой ещё код ты ожидал увидеть в ознакомительных примерах?>>739330Тоже толсто. Пока ретрограды дырявили перфокарты, писали очередной код на выброс, мужики развивали CS. Ты хотя бы ту же википедию почитал о вкладе лиспа.
>>737921 (OP)Никто тебе, петушила, не должен пояснять за динамическую типизацию, т.к. компьютер по умолчанию работает именно на ней.Это ты, чухан, должен объяснять за статическую типизацию./трэд
>>739556У компуктера по умолчанию её вообще нету, а динамикодрисня — просто вариация на тему "как завуалировать типы".
>>737921 (OP)Знакомое чувство. Тоже перешел с решета на питон и было ну ОЧЕ неуютно из-за типизации. Однако теперь привык, даже чувствую удобство. Хотя стоит добавить, что все удобство заканчивается после скриптиков и несложных программ, для серьезного проекта это заноза в заднице, как по мне.
>>739845>для серьезного проекта это заноза в задницеЭто скорее особенность питона, а не динамической типизации.
>>739848Особенность динамической типизации.
>>739865Нет, питона. Этот недоязычек не предназначен для чего-то более серьезного, чем средний скриптик.
>>739512Ты туп и уныл.
>>739887Как и остальные скриптоязыки.
>>738806Уже есть такое: лисп-машины, емакс, LightTable.Что характерно - все это написано на сортах лиспа. Смекаешь?
>>740002Что характерно, все это засохшие куски дерьма
>>739512>Это ты что с полетом в космос сравниваешь?Императивщики за двадцать с небольшим лет прошли путь от марио до крузиса. Функциональщики (а я напомню, "первый язык программирования был функциональным" и "лисп был переложением лямбда-исчисления в компьютер") за шестьдесят лет наконец-то осилили марио.Такой-то прогресс. Ещё чуть-чуть и заживём.
>>740073Что характерно – это все лагающие куски дерьма, даже емакс ядро которого на сях лагает относительно вима.
>>740002До появления, например, ноды, был JScript как минимум, были Rhino и прочие движки, позволяющие запускать js вне констекста браузера. И когда появилась нода - появлялись такие, которые говорили ЭТО ВСЕ УЖЕ БЫЛО ЭТО ТОРМОЗИТ.Социальные сети были задолго до появления Фейсбука или Вк. Интерфейс Метро из win8 - был задолго до win 8. Как и плоскота.Но почему-то никто, кто знал о том, что это уже было, не решил концептуалить это в интерфейсах ранее, чем стали стали. PC\OS\GUI был за долго до Apple и Майкрософта.Но выстрелили лишь они. И таких примеров миллионы, даже если не брать IT.В этом треде написали про смолталк, лисп, емакс, с этим самым - это уже было. Вся суть.
>>740147Просто потому что в виме ничего нет. А когда и в нем запиливаешь аналогичный функционал, он начинает тормозить похлеще емакса.
>>740217Смотря что ставить.Всё же сишная основа – это не говнокложура, на которой ЛегкийСтол тормозит как атом даже на обычном тексте.
>>740223Хуй знает, светлыйстол я вообще не осилил. Редактор увидел, а где там йоба-интеграция с реплом не заметил, поэтому вернулся обратно на емакс.>Всё же сишная основаНу... в емаксе тоже сишная основа, но однопоточная, от того и тормоза.
>>740226>в емаксеЯ про него и говорил.От многопоточности в текстовом редакторе изменится ровно нихуя – сам пораскинь мозгами, где она может пригодится.Вот асинхронность для отзывчивости приложения необходима. Её только осиливают в неовиме и в 8-м виме какие-то сподвижки начались.
>>740240>в текстовом редакторе В редакторе - да, а вот в емаксе лишней не была бы. Тот же flycheck бы вынести в отдельный, уже меньше тормозов.
>>739206> где elm делает react на ебле с domНо реакт же тоже реактивный вроде
>>739206Так-то в синтетических бенчмарках много кто "быстрее" React: virtual-dom, mithril, inferno.Но надо иметь в виду, что алгоритм Реакта оптимизрован под глубокие деревья (т.е. под реальные приложения), а все синтетические бенчмарки делаются на неглубоких деревьях.
>>737921 (OP)tl:drМожно делать всякие грязные трюки типа в одном случае передать содержимое файла, а в другом список того, что надо передать в командную стоку, чтобы этот файл сам открылся в нужной программе....Хотя это можно сделать и с помощью void *...мимо-Си-бог
>>740318>помощью voidАаааа блятьначальник! Этот мудель void* передаёт в функцию! Иди мой его блять.
>>740282В elm выигрыш за счет использования иммутабельного dom.
>>740374То есть он его пересоздает заново после каждого изменения?
>>740443И не перерисовывает остальные части, потому что знает, что они не могли изменится.
>>740470Ты про виртуальный дом штоле? Так он и в Реакте есть.
>>740470Вы весь этот свой виртуальный дом как мантру повторяете.При рендеринге даже одного элемента, может произойти рефлоу всей страницы.Сам виртуальный дом, лишь создает легковесную копию тех аттрибутов дом узлов, которые обычно дергают, чтобы не дергать за ними дом.Весь этот вдом нужен лишь тем, кто не умеет обращаться с ванильным рационально. Такая же прослойка как статическая типизация - суть защита от дурака.
>>740470ТО есть, ты создание огромной вложенной цепочки объектов, при любом изменении любого параметра одного из них - считаешь за выигрышь? Ты серьезно?По-твоему пересоздать 20 объектов заново быстрее чем изменить поле одного из них?
Кто соснул, лень читать
>>740552Мамка твоя.
>>740561ДА КАК ТЫ СМЕЕШЬ
>>740563Я тебе честно говорю. Сам проверь.
>>740566 НА ДУЕЛЬ! ОСКРОБЛЕНИЕ!
>>740570Приятно познакомится, Надуель.Я Сопромат.
>>740499Зачем пересоздавать все, когда можно использовать существующие, ведь они не могли измениться.>>740495Успокойся уже, порватка.>Весь этот си нужен лишь тем, кто не умеет обращаться с ассемблером рационально.Где-то я это уже слышал.
>>740495> Весь этот вдом нужен лишь тем, кто не умеет обращаться с ванильным рациональноА компиляторы нужны лишь тем, кто не умеет писать машинный код рационально.