LINUX.ORG.RU

Why static languages sucks?

 


0

2

Возьмем банальный пример из динамического языка

<html>
<head>
</head>
<body>

<div class="bar">div</div>
<div class="foo">div</div>
<div class="bar">div</div>
<div class="foo">div</div>
<div class="bar">div</div>
<div class="foo">div</div>
<div class="bar">div</div>
<div class="foo">div</div>
<script>

chngColor=function(){this.style.background="red"}
var wantedDivs = document.querySelectorAll('.foo');
for (var i = 0; i < wantedDivs.length; i++) {
    wantedDivs[i].addEventListener('click', chngColor);
}
</script>
</body>
</html>

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

UPD тему закрываю, поскольку, похоже, никто даже не понял (кроме йогурта, конечно), на текущий момент, о чем тут речь идет. Феерично!

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

anonymous ()

А используя event bubbling, в этой ситуации обработчик можно навесить не только один, но еще и на один только лишь элемент.

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

Жирновато.

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

Да мне похеру, я что, корову проиграл? Но ЧСХ, никто же не отписался по делу, только полные жопаболи посты. Доставляет.

J-yes-sir ()
Ответ на: комментарий от yoghurt

Ничо, с этим можно жить. Когда разберешься что к чему, это не мешает, как минимум. И в целом то, там все вполне логично.

J-yes-sir ()
Ответ на: комментарий от holuiitipun

это просто тайное послание рептилойдам от массонов!

Да какое нафиг тайное, эти гады уже не маскируются.

tailgunner ★★★★★ ()

Кода гораздо меньше, память экономим, выразительность повышается.

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

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

Слушай, есть неформальное понятие, динамические языки — языки где много динамики. Четкого определения нет конечно, также как «строгая типизация» — это конь в вакууме. Но в целом, все нормально, это юниксоид нынче дубовый пошел. Не надо мне втирать, что так не говорят

https://www.google.ru/search?q=static languages#newwindow=1&q="static lan...

J-yes-sir ()
Ответ на: комментарий от Deleted

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

reprimand ★★★★★ ()
Ответ на: комментарий от J-yes-sir

по делу

Дело-то в твоей шизофрении. О ней только и стоит писать в твоих топиках. Смысла-то никакого в твоем бессвязном бреде нет.

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

Если ты его не понял, это не значит что там его нет, не обобщай, товарищь. Программист поймет, но не кодер. а ты программистом не являешься, как ты мог бы понять? Зачем ты пытался это сделать, если твоей квалификации явно не хватает для этого?

J-yes-sir ()
Ответ на: комментарий от J-yes-sir

Да умерь ЧСВ уже наконец.

Это действительно похоже на бред шизофреника. Кстати, я так понял, что ты не тыкал не один статически типизированный язык, лол, при этом у него ДОГАДКИ.

Kuzy ★★★ ()
Последнее исправление: Kuzy (всего исправлений: 1)
Ответ на: комментарий от J-yes-sir

Да умерь ЧСВ уже наконец.

Это действительно похоже на бред шизофреника. Кстати, я так понял, что ты не тыкал не один язык с ссылочной прозрачностью, лол, при этом у него ДОГАДКИ.

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

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

J-yes-sir ()

Этот прием называется callback и широко применяется, например, в С (это статический язык в твоей терминологии?)

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

Я не знаю си. Вот мои рассуждения. Представь, что у нас есть интерпретатор scheme без присваивания. Допустим, имеем выражение

(define (f x) (lambda(y) (+ x y)))
(define adder (f 1))
последнее выражение раскрывается в
(define adder ((lambda(x) (lambda(y) (+ x y)))1))
И мы можем сразу редуцировать его в
(define adder (lambda(y) (+ 1 y)))
Поскольку мы знаем, что значение x никогда не изменится несмотря на то, что у нас интерпретатор, мы можем перед выполнением пройтись по тексту, и сделать подстановки и редукции. Как только мы вводим set! мы уже не можем этого сделать. Все дочерние функции замыкания будут, грубо говоря, в рантайме лазить в свое окружение, выяснять, значение x. То есть, это частный случай динамического связывания, по факту, только с одним окружением. Поскольку окружение тут у нас только одно, код еще худо бедно можно проанализировать, но когда окружение вообще не детерминировано, всякая надежда пропадает.

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

J-yes-sir ()
Ответ на: комментарий от annulen

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

J-yes-sir ()
Ответ на: комментарий от J-yes-sir

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

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

ннууу... спасибо, что хоть коммутативно:)

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

По поводу последнего абзаца. А разве это не очевидно? Ну и кроме того, когда компилятор знает, что ему подсунут в рантайме он может не заморачиваться, а просто делать сильно оптимизированный код. В этом и есть сила статической типизации.

Во если тебе бы предложили делать числодробилку, ты бы писал её на рутноне?

nanoolinux ★★★★ ()

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

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

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

Покажи как. На вот этой вот ссылочно прозрачной схеме.

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

ничего
хотя я помню, что ты достаточно годные комментарии пишешь, и по делу
может, со временем и напишу что-нибудь =)

если интересно, могу залить на гитхаб список, как это сделал mystra64

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

Это выглядело как то так


o={
element1: {onclick: null, id="foo"},
element2: {onclick: null, id="bar"},
element3: {onclick: null, id="foo"}
}

o.element1.oncklick=if(o.element1.getAttribute("class")==="bar") o.element1.onclick=function(){o.element1.style.background: "red"}
o.element2.oncklick=if(o.element2.getAttribute("class")==="bar") o.element2.onclick=function(){o.element2.style.background: "red"}
только еще с адом скобья. на схеме писать такое у меня нервы не выдержат.

J-yes-sir ()
Ответ на: комментарий от Kuzy

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

J-yes-sir ()
Ответ на: комментарий от J-yes-sir

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

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

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