LINUX.ORG.RU
ФорумTalks

Псто ненависти к динамическим яп


0

5

И какой урод придумал всю эту динамическую типизацию а-ля питон с яваскриптом? Руки бы пообрывал. На нормальных языках (java, c#) кусок кода приличного качества можно накидать даже не заглядывая в документацию, пользуясь одним лишь автодополнением среды разработки и здравым смыслом. Даже если нифига не знаешь библиотек и фреймворков, используемых в проекте - можно быстро что-то разобрть и поправить. А в этом говне вместо написания кода сидишь часам в гугле и дебагере - чтобы разобраться что же тебе прилетает, что за фигню надо в функции передавать итд.

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

★★★★

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

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

Ещё раз: с чего ты это взял?

Я говорю именно о КОМПИЛЯЦИИ в жабоскрипт.

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

ну тогда тем более трансляция из другого языка не нужна

Мде. Кажется, ты не понимаешь ни механизмов работы JS (google://v8 hidden types), ни того, зачем нужна проверка типов на этапе трансляции.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

За всё надо платить. Избавляешься от содомии с приведением типов и наследованием, зато теряешь интуитивность.

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

Если у вас на работе не могут написать понятный и читаемый код, в котором не разберёшься без дебаггера и IDE, то это ваши проблемы :)

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

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

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

За всё надо платить. Избавляешься от содомии с приведением типов и наследованием, зато теряешь интуитивность.

В той же яве я последние лет 5 крайне редко встречаю код с явным приведением типов. И, кстати, что в наследовании содомического?

Если у вас на работе не могут написать понятный и читаемый код, в котором не разберёшься без дебаггера и IDE, то это ваши проблемы :)

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

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

И, кстати, что в наследовании содомического?

Городится куча всяких интерфейсов и абстрактных классов, для множественного наследования свои костыли создаются. Иногда они нужны, иногда наоборот мешают.

Люди, писавшие этот код, уже давно уволились.

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

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

не понимаешь ни механизмов работы JS

v8

возможно, я не понимаю механизмов работы в8

а вот про трансляцию не знаю, давай ликбез

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

Суть в том, что ты заранее должен знать, что и как делать

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

а вот про трансляцию не знаю, давай ликбез

Трансляция - это перевод с одного языка на другой. «Другим» обычно бывает язык реальной или виртуальной машины, но может быть и ЯВУ (source-to-source translation).

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

А байт-код, по-твоему, не другой язык?

В общем, вылезай из криокамеры. Куча народу уже клепает компиляторы из чего угодно в джаваскрипт.

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

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

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

зачем нужна проверка типов на этапе трансляции в яваскрипт?

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

tailgunner ★★★★★
()

Когда я сам пишу - я слежу за типами. Но вот free() в C# очень не хватает: писал разный ИИ на нём, для датамайнинга загружал большие списки... И вот это вот, ждать, когда память освободится, не выходит - всё уходит в своп и тормозит...

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

Городится куча всяких интерфейсов и абстрактных классов, для множественного наследования свои костыли создаются. Иногда они нужны, иногда наоборот мешают.

Ну, никто же не заставляет иерархию типа такой плодить: https://onedrive.live.com/redir?resid=97F01FD7A08FEAA7!13796&authkey=!AAG...

Статическая типизация это не панацея от overengineering.

И? В этот момент код внезапно стал хуже?

Нет, как был говном, так и остался. Вопрос только в том, кому в этом всем рыться.

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

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

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

Как массив обсчитан - грохаем процесс

C# же. И у меня простой алгоритм на ноутбуке. Я не думал, что память освобождать настолько через жопу (создание процессов) нужно.

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

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

чтобы безотносительно - нет

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

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

что тогда есть скриптовой язык?

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

что есть скрипт

Собственно программа написанная на скриптовом языке. Опять же на том же питоне не любую программу можно назвать скриптом.

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

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

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

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

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

динамический язык

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

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

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

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

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

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

Например, трансляцией в asm.js. Но вообще-то я не говорил о производительности, и Мигель вроде тоже.

при трансляции проверяется всё, а потом снова проверяется?

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

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

среда должна заниматься именно интерпретацией

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

ИМХО с точки зрения порядка исполнения можно ghci притянуть к скриптовому, но во всем остальном... Одна только независимость порядка объявлений чего стоит.

zinfandel ★★
()
Ответ на: комментарий от zinfandel
~> cat hw.hs 
#!/usr/bin/runhaskell

main = putStrLn "Hello world!"
~> ./hw.hs  
Hello world!
hateyoufeel ★★★★★
()
Ответ на: комментарий от zinfandel

ты имеешь в виду ghci?

Я, вообще, про runhaskell, который может ссылаться на что угодно, что есть в твоей системе (runghc, runhugs или что-нибудь ещё).

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

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

я прочёл, что давно так не работают

Похоже, это единственное, что ты прочел.

а как тогда?

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

tailgunner ★★★★★
()

бывает в жизни огорченье

пиши всё на C# нет проблем же...

DemonZLa
()

И какой урод придумал всю эту динамическую типизацию

Джон Маккарти.

bluesman
()

И какой урод придумал всю эту динамическую типизацию а-ля питон с яваскриптом?

Если так бомбит, то почему бы не запилить свой ЯП с преферансом и куртизанками?

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.