Pull to refresh

Comments 35

Когда ваша программа выполняется — мир этой программы полон значений. Ого!
Думал по заголовку, что речь пойдет об internal, о том как работает интерпретатор, как работает выделение памяти и как на самом деле работают структуры.
Что-то типа почему массив до миллиона значений — одна структура, а после — другая…
Если не ошибаюсь, то что смены структуры данных массива необязательно превышать миллион символов — достаточно закинуть туда разные типы данных [1, 2, '3', 4] и у нас уже получится хэш-таблица в памяти вместо массива.
Вообще тоже ожидал от статьи чего-то большего.

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

автору стоило бы все ещё беспокоиться ) Мне грустно, что он только начал разбираться, но уже запилил сайтик и начал учить чему-то. Такого мусора уже давно критическая масса.
UFO landed and left these words here
тем не менее он собирается учить, сделал рассылку и, как он сам там пишет «Currently absolutely free».
Его «ментальная модель» — это дамп с его мозга. Это очень полезно, но только ему. Мне, например, это тяжело читать было.
И я тоже купился на заголовок — я ожидал про internal почитать. Был бы он «Мои заметки при изучении JS» или «Особенности JS простыми словами» (кстати, примерно так сайт и называется?) — было бы более корректно.

Я тут пару ссылочек оставлю.


https://stackoverflow.com/users/458193/dan-abramov
https://mobile.twitter.com/dan_abramov
https://github.com/gaearon


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

спасибо, сейчас посмотрю.
Да, я далек от JS и web. Понемногу это исправляю. И кто он такой не знал ) Тем не менее, по статье мое мнение прежнее, изменил только последнюю часть — ок, он может учить наверное.
Ох уж эти джуны с синдромом Даннинга-Крюгера.
На самом деле, Дэн Абрамов — создатель Redux и на сегодняшний момент один из главных идеологов React'а. Согласен, конкретно эта статья немного сумбурная, но это однозначно не тот человек которого нужно отправлять «подучить матчасть».
ох уж эти джуны, для которых авторитет важнее критического мышления
Абрамов только начал разбираться? Ха-ха-ха!
Javascript ужасен. Его ужасная типизация, неявное приведение типов. Мне непонятна ООП-модель js. Почему нельзя было сделать наследование, как в нормальных языках? Область видимости это кошмар. Слишком много нужно держать в своей памяти, чтобы писать код на javascript. Код на js плохо читается и понимается. Я считаю, что javascript плохо подходит для больших проектов. Большие проекты надо писать на компилируемых языках со статической типизацией.
У меня искренняя надежда, что какая-нибудь технология, типа WebAssembly, вытеснит в будущем это недоразумение.

Потому и придумали typescript.

Да, ts — это, пожалуй, лучшее, что случилось с js за историю его существования. Я на самом деле не встречал ни одного разумного довода против использования ts.
Хм… а может Вы просто его готовить не умеете? Динамическая типизация это не только изьян, но и преимущество, прототипное наследованние это экономия памяти, если бы js не нужно было бы тащить легаси первых версий, он был бы еще быстрей и лучше.
UFO landed and left these words here
Вообще-то, при всей моей нелюбви к JS оригинальный, изначальный ООП там был довольно правильный (который прототипное наследование). То есть все очень просто на самом деле: все свойства прототипа хранятся в обычном поле. То есть магии нет, кроме процесса создания нового экземпляра. Я думаю ошибкой было старание всячески скрывать этот процесс и поле prototype и __proto__ (уродское имя) от глаз программистов, когда надо было его наоборот показывать и понимать.

Вы поймете что это правильный путь, если начнете программировать на Rust, например. Там тоже все что нужно унаследовать, ты просто записываешь в поле. Это минимальный уровень абстракции. К тому же, когда есть только один прототип (отсутствие множественного наследования), никаких присущих ООП проблем типа Diamond Problem (в С++ решается плохо понятными virtual-ами) не возникает.
«я не понимаю» = «ужасный язык» — это както глупо. Он плохо подходит для больших проектов изза динамической типизации? Тоесть все языки без статик типов не подходят для больших проектов?
Очень странный коментарий…
Почему странный? Cовершенно обычное капитанство. JS можно любить, можно не очень, но отрицать перечисленные проблемы — это религиозный фанатизм какой-то.
Про большие проекты лучше всего сказал другой малоизвестный программист: «you can write large programs in JavaScript. You just can't maintain them»©.
you can write large programs in JavaScript. You just can't maintain them — Anders Hejlsberg

Ну давайте евангелиста и ведущего разработчика TypeScript цитировать как истину в последней инстанции в разговоре про JavaScript.


Прекрасно можно большие проекты поддерживать на чем угодно, хоть на Коболе (и тому есть миллион дорогостоящих подтверждений :)


Проблема неподдерживаемого кода — всегда разработчики, а не язык.

А ничего что Кобол имеет статическую, строгую типизацию, и вообще по строгости находится на противоположном от JS конце спектра?

Понятия не имею, о каком Коболе вы говорите, но тот, на котором написано 20 миллиардов строк, который породил проблему Y2K, и на котором довелось писать мне в конце девяностых (и иногда приходится сейчас, когда хочется заработать на новую машину на неделю) — все внутри хранит строками фиксированной длины.


MOVE X TO Y работает для вообще любых двух переменных.

UFO landed and left these words here
Ох уж эти хипстеры… Человек, стоявший у истоков индустрии, создатель ТурбоПаскаля(!!!!!), Делфи, C# и бог знает чего еще у них проходит как «евангелист TypeScript» бгг…

Но да, ts был создан именно поэтому. И по мере того, как проект на JS превышает некую крит. массу его начинают переписывать на TS. Или вы думаете, что Angular просто от нечего делать на ts переписали?

Проблема неподдерживаемого кода — всегда разработчики, а не язык


Ну это такое совершенно верное и абсолютно бессмысленное утверждение. Да, имея бесконечное количество идеальных разработчиков в абсолютном ваккууме можно писать код в notepad на Брейнфаке. На практике же ситуация немного иная.
Человек, стоявший у истоков индустрии [… ]

Какой, стесняюсь спросить, индустрии? Прикручивания эпитетов к языкам, созданным другими? Прикручивания синтаксиса к языкам, созданным другими? Прикручивания типов к языкам, созданным другими?


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

Язык действительно прекрасный. В каком языке еще можно увидеть отдельный пакет с миллионными загрузками на проверку переменной на number is-number?
UFO landed and left these words here
Нормальное там наследование. Там просто классов нет, в привычном вам С++/С#/Java смысле.
У меня уже давно сложилось мнение, что всё индивидуально.
Если взять мой личный пример, пока я пишу регулярно на каком-то языке, в том числе и на JavaScript, чувствую себя, как рыба в воде, но стоит сделать перерыв больше года, то уверенность использования сразу пропадает. Возвращается только через пару месяцев регулярного использования.
У меня с родным русским языком была похожая ситуация. После двух с половиной лет жизни в Юго-Восточной Азии, когда почти не использовала родной русский язык, и работала только с англоговорящими клиентами, почти разучилась грамотно писать на русском языке. Вот родной русский язык, что самое смешное, восстановливала до прежнего уровня дольше, чем за год.
Почему константу — постоянную, неизменяемую величину в каждой поучительной статье называют переменной?
В математике так же.
Переменная — это символ, который принимает некоторое значение в контексте. Например, при вычислении x^2+2*x в контексте [x=3], скажем, при вычислении f(3) функции f(x)=x^2+2*x, значение x неизменно. Однако, мы называем x переменной, потому что она зависит от контекста.

Либо же в JS так говорят по привычке.
Обычно использование null представляет собой указание на то, что некое значение не было назначено переменной умышленно (Usually, null represents that some value is missing intentionally). Тут точно правильный перевод?
Перевод правильный, формулировка не очень хорошая, запутывающая. Вместо missing=«не было назначено», стоило бы написать «отсутствует» или «назначено пустым» или как-то так.
В некоторых кодовых базах и командах педантично относятся к этому вопросу, заставляя всех, в том случае, если значение записывается в переменную лишь один раз, использовать const.


const не нужен. (С)

Я до сих пор не могу понять, почему java-программисты такие храбрые и не использую (почти) атрибут final в своих программах — то есть абсолютно не бояться что вдруг изменят переменную где-то «внизу» программы, а javaScript-программисты такие трусливые. — НЕ ПОНИМАЮ этого явления!

То что введение const в JavaScript было ошибкой, это уже поняли и сами добавившие его в язык.

UFO landed and left these words here
Only those users with full accounts are able to leave comments. Log in, please.