Динамическая типизация, которая вызывает множество регрессионных ошибок.
Отсутствие модульности. Нет ни модулей, ни классов, прототипное ООП рвет мозг тем, кто пишет на C++\Java\C#.
Неочевидное поведение во многих местах.
Появилась идея — предупреждать пользователей, что при нажатии по ссылке будет произведен переход на другой домен (+1 to abididea)
Нет, спасибо.
Сайты, такие как Google and Facebook, продолжат нормально функционировать, т.к. используют один домен, а это исключит возможность фишинга.
Полная чушь. Похоже, автор оригинальной статьи не совсем понимает, что такое домен. Да и сама «уязвимость» заставляет усомниться в его компетентности в вопросах безопасности. Как писали выше — существует 1000 и 1 более изощренный способ отъема чего угодно, если злоумышленник уже смог внедрить код в страницу.
Dial up, например, до сих пор используется в терминалах оплаты банковской карточкой. Технических предпосылок сего не знаю. Думаю, учитывая распространенность безналичных денежных операций в США, большая часть dial-up-трафика генерируется подобными устройствами.
Допустим у меня есть три класса GrandParent, Parent и Child. Думаю из названий понятна иерархия наследования. Допустим у всех из них есть метод foo. Допустим я хочу вызвать из foo в Child метод foo Parent'а, с прототипам я сделаю так:
Parent.prototype.foo.apply(this, arguments);
В вашем случае, я так понимаю, это будет выглядеть так (если я все правильно понял):
this.__bases[1].foo.apply(this, arguments);
Нужно держать в голове всю цепочку наследования, код перестает быть самодокументируемым. Ко всему этому оверхэд по памяти в вашей реализации. Да и в сущности вы реализовали все те же прототипы, вид сбоку и кривовато.
Добро пожаловать! Было бы безумно интересно узнать о технологии бенчмарков (т.е. как осуществляются замеры, какие используются критерии и каковы отличия от обычных игровых движков). Было бы интересно вообще почитать о 3D движках, их внутреннем устройстве. С упоением недавно перечитал ревью движков от Id Software, которые делает Fabien Sanglard — хотелось бы чего-то подобного. Заранее спасибо!
Вообще, Едвард Тафти (книги которого советует к прочтению Артемий) в книге «Visual display of quantitive information» говорит о том, что данные имеющие одно измерение (количество машин) нельзя представлять в двухмерном виде (площадь машин), т.к. это всегда ведет к оптическому искажению актуальных данных. Правильнее всего было представить эти данные бар-чартом.
Меня умные книжки в детстве научили, что неумно и невежественно на любую глупость реагировать битьем морды. P.S. личное мнение никак не противоречит работе чиновника (сейчас вот взял и перечитал, что запрещено государственным служащим), печально, что вы считаете скабрезным его иметь.
Этот на самом деле одно из самых больших заблуждений. Люди каждый день не могут чего-то, у них что-то не получается. И то, что не получилось у других — далеко не гарантирует, что не получится лично у вас, Учиться нужно у историй успеха и вдохновляться, а от историй провала не так уж много толку.
jsdom использует упомянутый htmlparser непосредственно для парсинга страницы, более того он на выходе дает полноценный DOM, а не AST. ИМХО, я бы его выкинул из сравнения, т.к. по сути это не совсем чистый парсер
ну от проблем с областью видимости спасает «use strict»; + программист на js который уже не может скоуп написать — уже клиника какая-то. foreach есть в каждой второй библиотеке или реализуется копипастом за 5 сек (если вы конечно не относитесь к той категории людей. которые из принципа все делают на vanilla js и каждый раз с нуля). Получение подстрок — сахар, который так же далеко не во всех языках есть, да и положа руку на сердце — довольно специфическая задача (как то раза 2 или 3 встречалась)
Сахарочек-сахарок. Что "!" поставь, что function напиши, асинхронную природу происходящего все равно приходится держать в уме. И как быть со сложными сценариями асинхронности (parallel, forEachSeries и прочее) или оно дальше синтетических примером не могет?
Но у яваскрипта есть свои заковырки. Прототипная модель объектов, динамиеские типы, колбек-функции, всё это, можно сказать, на любителя.
Даже отпало желание читать дальше. Ну я еще худо-бедно могу понять неприязнь к прототипам (да у многих с ними проблемы), я могу понять про типизацию (тем, кто не писал ни на чем кроме шарпа или явы, бывает тяжело перестроится). Но коллбек функции-то чем не угодили? Только синхронность, только хардкор?
Вот с чего: Структура и интерпретация компьютерных программ. Имхо, лучшее что можно дать школьнику при углубленном изучении информатики. Тут вам и алгоритмы, и базовые концепции и Scheme, который достаточно примитивен, но прививает хороший стиль программирования, в отличие от Бейсика. Ну и как заметил оратор выше, необходимо прививать ответственность и прилежность, а еще сбивать юношеский гонор, которым страдает почти каждый технарь-юниор.
3 года работал и над крупным проектом на C#, последние полгода переключился на JS. Хорошие IDE вполне адекватно умеют всю навигацию по JS-коду и без интроспекции (которая и позволяет в шарпе так хорошо работать автокомплиту и навигации). В конце-концов, люди десятилетиями писали и продолжают писать на тех же C/C++, где с навигацией по коду все те же проблемы что и в JS (в силу отсутствия метаданных) и все живы здоровы. Что касается статического анализа — тут в JS вам опять таки помогут, например, JSLint + юнит-тестирования. От семантических же ошибок не спасет и полноценный компилятор. Ну а то, что кто-то не в силах приспособиться к инструменту, принять его слабые стороны, уметь их невелировать и брать на вооружение сильные, говорит лишь о профессиональной компетенции этой личности. Такие дела.
Aw Jeez, not this shit again…
Нет, спасибо.
Полная чушь. Похоже, автор оригинальной статьи не совсем понимает, что такое домен. Да и сама «уязвимость» заставляет усомниться в его компетентности в вопросах безопасности. Как писали выше — существует 1000 и 1 более изощренный способ отъема чего угодно, если злоумышленник уже смог внедрить код в страницу.
В вашем случае, я так понимаю, это будет выглядеть так (если я все правильно понял):
Нужно держать в голове всю цепочку наследования, код перестает быть самодокументируемым. Ко всему этому оверхэд по памяти в вашей реализации. Да и в сущности вы реализовали все те же прототипы, вид сбоку и кривовато.
Даже отпало желание читать дальше. Ну я еще худо-бедно могу понять неприязнь к прототипам (да у многих с ними проблемы), я могу понять про типизацию (тем, кто не писал ни на чем кроме шарпа или явы, бывает тяжело перестроится). Но коллбек функции-то чем не угодили? Только синхронность, только хардкор?