Pull to refresh
99
0
Send message
Товарищ, во первых это токенизатор HTML, где впринципе по-другому особо не напишешь, а во-вторыз это не client-side, ну а в третьих ООП в это проекте как раз есть =)) Так что пальцем в небо, чувак
Очень даже фича, с динамическим контекстом можно творить много интересных вещей (делать примеси, например)
нелексические замыкания

Извините, это что за зверь такой? Особенно учитывая, что сам термин «замыкание» является сокращенным варинатом термина «лексическое замыкание».
Оно не может быть больше единицы, исходя из определения, Вообще, у байт-кода нативного оно ближе всего к единице, поэтому, это конечно не самая объективная характеристика языка, но одна из возможных, если брать в расммотрение еще читаемость кода, но этом контексте к JS вроде бы никто не предъявлял притензий, Если отвечать конкретно на ваш вопрос, то все зависит от языка, Например, в LISP (и производных, например Scheme и т, д, — да оно близко к единице, в силу легкого синтаксиса, возможности создавать необходимые для задачи DSL на лету и в общем открытости в сторону мултипарадигменности, т, е, рамки смягчены лепи что хочу), а вот в Haskel дела уже хуже, что является обратной стороной его формалистического функционального подхода (где, извините, без монады даже пукнуть нельзя), Но опять таки не стоит все это воспринимать как характеристику, позволяющую отделять хорошие языки от плохих, Как раз интересно искать плюсы в языках и минусы, в нашем своеобразном и разноплановом мире у всего есть своя ниша, даже у Visual Basic ;), имеющая свое право на существование, Даже экзотерические вещи, вроде Brainfuck находят свое практическое приминение (например, в llvm для примера реализации языка с использованием инфраструктуры используется как раз Brainfuck. А что? Синтаксис минималистичен, язык Тьюринг-полный, да и известен более или менее для обучения самое то. Вот дабы не быть голословным: https://github.com/earl/llvm-mirror/tree/master/examples/BrainF), Что-то я сегодня многословный =)
Странные вещи высказаны в статье, Откуда-то на клиенте взялась бизнес-логика на js в 100000 строк, Я, честно, говоря не видел пока клиентских браузерных проектов таких объемов, Во-вторых, что за странная убежденность, что статическая типизация хоть в каком-то виде спасает от проблем в масштабных проектах? Тысячи проектов бажных на C++ тому пример, более того не спасает даже дополнительный статический анализ кода (почитайте Джона Кармака о его энтузиазме и разочаровании в статическом анализе C++ кода), В подобных проектах проблемы связаны не с языком, а с архитектурой приложения, инфраструктурой тестирования и т.д. Вся проблема, описываемая в статье, возникает из ложного посыла о том, что динамическая природа языка — источник всех бед, Меня, честно говоря, сильно раздражает раздутая паника вокруг js (и ее производные в виде TypeScript), т.к. сам прошел все эти стадии в начале своей карьеры программиста. И именно поэтому считаю подобный подход незрелым, Я начинал изучать программирование C/C++ еще в школе, на работе познакомился с C# и первое время JS меня раздражал, Я просто его не понимал, Совершенно, Весь мой языковой кругозор ограничивался императивными статически-типизированными языками и больше для меня мира программирования не существовало, С таким кругозором JS мне казался шуткой, девиацией, Я настолько его ненавидел что на рабочем столе у меня была фотография Брендана Ахо с нецензурной подписью, Подобную же реакцию я испытал, например, по отношению к Lisp, когда познакомился с ним в университете, Но я нашел в себе силы (а вернее меня вынудила работа =)) все таки углубится в JS, И мое мнение изменилось, Этот язык не идеален, как и все в этом мире. Но преодолев порог вхождения («где классы?», «фу прототипы», «фу динамическая типизация» и прочее) я чувствую себя как рыба в воде, Мне очень нравится гибкость языка, возможность буквально заниматься «лепкой» кода, т.к. в js я не так сильно ограничен синтаксисом, как в статически-типизированных языках, Я вижу в нем свою элегантность, Перейдя через эту «гору ненависти к JS» в свое время я открыл для себя другой мир программирования, где не IDE диктует мне мышление, не язык, а мышление определяет мой образ действий, Моя «программисткая ксенофобия» прошла, С этим ощущением я решил дать второй шанс Lisp и открыл для себя мир функционального программирования, я вернулся к C и мне теперь он во многом нравится на много больше C++, Я осознал, что восприятие ООП, как панацеи от всего наивно, Мне все еще нравится C#, но теперь я вижу сколько оверинджиниринга и бутстрап-кода приходится в нем писать, что бы поддержать эфимерную парадигму, Наверно, главное чем мне нравится JS — это его выразительная способность, У Эдварда Тафти в книга есть понятие DataInk приминительно к аналитической графике (чарты, инфографика и прочее), DataInk — это отношение чернил, используемых для отображения полезной информации, информации при потере которой, график перестанет выполнять свое информационное предназначение к общему количеству чернил, использованных для отображения графика, Чем ближе это значение к 1, тем лучше, Для кода я бы ввел такую же характеристику DataCode — отношение кода, который выражает непосредственно решение задачи ко всему написанному коду, Так вот, это значение у JS ближе к 1, нежели у многих других языков, Тоже касается C (его я тоже люблю=)), В общем, к чему все это эссе: не существует серебрянных пуль, изучайте разные языки, вникайте в их дизайн, ищите плюсы и минусы и научитесь их использовать себе во благо. Не стройте себе тюрьму из предубеждений и не пытайтесь все новое запихать в узкую коробку, в который вы сидите, Возможно, то что вы так не любите, является ключом в целый новый мир (правда при условии, что вы перестанете пытаться запихать его себе в задницу, вместо замочной скважины =))
Динамическая типизация, которая вызывает множество регрессионных ошибок.
Отсутствие модульности. Нет ни модулей, ни классов, прототипное ООП рвет мозг тем, кто пишет на C++\Java\C#.
Неочевидное поведение во многих местах.

Aw Jeez, not this shit again…
Появилась идея — предупреждать пользователей, что при нажатии по ссылке будет произведен переход на другой домен (+1 to abididea)

Нет, спасибо.

Сайты, такие как Google and Facebook, продолжат нормально функционировать, т.к. используют один домен, а это исключит возможность фишинга.

Полная чушь. Похоже, автор оригинальной статьи не совсем понимает, что такое домен. Да и сама «уязвимость» заставляет усомниться в его компетентности в вопросах безопасности. Как писали выше — существует 1000 и 1 более изощренный способ отъема чего угодно, если злоумышленник уже смог внедрить код в страницу.
Перефразирую вопрос: как процесс запущенный в VM (которая должная, как я понимаю, являться песочницей для это процесса) может модифицировать эту VM?
Спасибо, буду знать. Не думал что звонок идет напрямую в банк, минуя посредников. Хотя в общем-то вполне логично. Век живи — век учись.
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. ИМХО, я бы его выкинул из сравнения, т.к. по сути это не совсем чистый парсер
Или даже так =):

a && a.b && a.b.c && a.b.c.d

ну от проблем с областью видимости спасает «use strict»; + программист на js который уже не может скоуп написать — уже клиника какая-то. foreach есть в каждой второй библиотеке или реализуется копипастом за 5 сек (если вы конечно не относитесь к той категории людей. которые из принципа все делают на vanilla js и каждый раз с нуля). Получение подстрок — сахар, который так же далеко не во всех языках есть, да и положа руку на сердце — довольно специфическая задача (как то раза 2 или 3 встречалась)
Сахарочек-сахарок. Что "!" поставь, что function напиши, асинхронную природу происходящего все равно приходится держать в уме. И как быть со сложными сценариями асинхронности (parallel, forEachSeries и прочее) или оно дальше синтетических примером не могет?

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity