LOL, спасибо:))
Ценителю кривых недоязычков надо бы научиться различать строгую и статическую типизацию, чтобы не выглядеть банальным невеждой. Для работы данного примера нужна динамическая типизация. Динамическая типизация — это как в Python, Ruby, Erlang, LISP и ещё куче мест, где тип переменной не задаётся и может быть любым из известных, но операции с ним всё равно такие. какие позволены типу. А вот когда (хрестоматийный пример про JS) ’5’-3==2, но ’5’+3==53, это никакой динамикой не объяснить, это банальный бред, мокрая рваная тряпка вместо строгой типизации.
JS отвратителен не динамической типизацией, не поддержкой DOM, не JSON, не замыканиями и ничем подобным, но 1) слабой типизацией с непресказуемыми эффектами, 2) кучей дебильных решений по синтаксису, которые взрываются самым неожиданным образом, 3) аналогичных проблемах с библиотечными функциями. В этом он близок PHP (ещё один выбредок веба) и Perl, который всего лишь старался быть «лучший шелл, чем шелл, и лучший awk, чем awk», но его неизбежные проблемы были раздуты и подняты на флаг как принципиальные решения.
Простейшее гугление по «weird javascript feature» показывает сотни таких примеров. Вот небольшая выборка со StackOverflow:
2 == [[[2]]]
a[[[["abc"]]]] === a["abc"]
Сравнения — некоммутативные и нетранзитивные:
’’ == ’0′ // false
0 == ’’ // true
0 == ’0′ // true
false == ’false’ // false
false == ’0′ // true
false == undefined // false
false == null // false
null == undefined // true
" \t\r\n" == 0 // true
Неупорядочённый синтаксис разделения операторов, когда два оператора, валидных по отдельности, рядом через ’;’ становятся синтаксической ошибкой. Странные и неочевидные правила automatic semicolon insertion, при отсутствии возможности явно исключить его на стыке строк, как сделано во всех нормальных языках с построчным синтаксисом (Python, Occam, BASIC образца MS, и так далее).
Молчаливая конверсия между числами и строками с местами неочевидными и неуправляемыми правилами.
Восьмеричные константы по ведущему ’0′ и молчаливое игнорирование проблем с ними (parseInt("08″) == 0), а как общий подход для библиотеки — вообще тенденция на максимальное маскирование ошибок вместо показа их как исключений (опять-таки, общее с PHP и Perl).
Кривые правила видимости переменных (например, явно объявленная во вложенном блоке будет видна снаружи от него).
Возможность грязного хака с заменой значения для undefined, Infinity, NaN (общая проблема с PHP и старыми Питонами, но эти хоть в новых версиях такое правят).
Бездумное копирование свойств старых проблемных API (например, работа с датами — год минус 1900, январь как 0).
void как префиксный оператор.
Продолжать тут можно часами, мне надоело. Общее впечатление — язык разработан, мягко говоря, через пятую точку, фатально неравномерно и бескультурно. Его немногочисленные преимущества на этом фоне практически незаметны, остаётся только одно — что он хоть и четырежды дерьмовый, но уже стандарт.
«И как приятно, где нас нет, какая чистота...» :)
Вот про 99% и есть «мечты и домыслы». 90% — ещё готов поверить (учитывая реальный уровень запросов тех, кому компьютер нужен для ютуба и вконтактика), но вряд ли больше. А если учесть офисный мир, в котором по факту каждый второй компьютер, то может оказаться, что и меньше.
Через год всё увидим — расширение мира смартфонов уже остановится.
PC по любому не уйдёт в ноль, и вряд ли скатится ниже 10%. Просто из-за принципиальных ограничений характеристик карманного изделия по сравнению даже с лаптопом. А уж тем более классы типа «рабочая станция» и «сервер» останутся нетронутыми. А ещё надо учесть, что сейчас смартфон — это новая мода, и пока идёт поток запросов первичных обладателей. Когда он схлынет, будет некоторая регрессия.
Я вот жду, когда же авторы интерфейсов перестанут ориентироваться на телефон как основную цель и поймут, что десктоп надо делать иначе, чем телефон...
Ну уж... Кошмаръ аццкій циникъ, а Егор не станет таким хотя бы из-за религии. И это скорее хорошо — при всём опыте Кошмара он на моей памяти ни разу не выдал такого концентрата конструтивных утверждений и положительного опыта, который потянул бы хотя бы на два абзаца. (Для примера вспомним хабр — примитивизм последнего не так важен, как именно общая конструктивная направленность статей.)
Хм, логично:) По крайней мере соответствует вопросу.
PHP может быть неустранимым внешним требованиям. Некоторые, как я, могут позволить себе занять позицию «у меня PHP неприменим нигде и ни под какими условиями», но для веб-разработчика это проигрышная позиция. А статья очень хорошая, если Вам не понравилась — значит, Вы или гений и можете сказать лучше (и где тогда?), или нифига не поняли (тогда перечитывайте до просветления).
Ну я в 14 уже работал (первая реальная программа — драйвер графического адаптера для ДВК-3), и это ещё в
Уже смешно:)
Вы заняли первое место на районной олимпиаде по солипсизму.
Hint: Itanium.
А почему машина разработчика не должна быть надёжной? ;)
Пример с перевернувшимся битиком я уже приводил. Я пару раз такое видел вживую.
А прогонять всё через сборочный сервер с супернадёжным защищённым железом — не всегда возможно.
А ещё машина разработчика должна быть ровно такой скорости, чтобы его работа не тормозила, но не быстрее, иначе получится продукт известного типа, который нормально работает на железе минимум в 3 раза дороже бюджетного. Поэтому меня все эти гонки за процессорами для разработки удивляют.
А на самом деле у вас память битая, или конденсатор какой потек.
Пожалуйста, перестаньте путать кванторы. Я в этой дискуссии не рассматриваю потёкшие кондёры или битую память.
При том, что частота процессора и так была занижена производителем на 40% из маркетинговых соображений.
Примеры такого за последние лет 5 в основной линейке продуктов (не в Extreme и т.п.)?
Жаль, пара вариантов сразу не проходит.
А если же есть проблемы со стабильностью — то замедление и в два раза может не помочь.
Если бы это было так, то любой процессор можно было бы разгонять до бесконечности:)
Если у Вас нет образования в области радиоэлектроники — я не смогу это объяснить за доступное мне время. Так что просто поверьте.
Усиленная гарантия надёжности за счёт ухода из области проблемных частот.
Производители делают большинство моделей процессоров на едином процессе и разделяют готовые изделия по скорости в результате тестов корректности работы. Но эти тесты фактически однократные и не учитывают физическое старение техники. Поэтому работа на номинальной частоте означает повышение вероятности проблем через некоторое время (месяцы).
Реально это проявляется у нескольких процентов. Но ситуация типа «в собранном и отданном юзеру перевернулся один битик, поэтому оно глючит в неподходящие моменты», мягко говоря, неадекватна. Замедление уменьшает долю таких ситуаций до ничтожной.
Альтернатива — техника со сквозным контролем целостности данных (хотя бы ECC), она обычно исправляет одиночные однократные ошибки молча. Но это типично для серверов, а вот для настольной машины (даже разработчика) это слабо реально — никто такое не купит. Проще заказать какую-то круть типа Corei7 и чуть замедлить.
Разгон это для хомячка. Машине разработчика такое противопоказано. Лучший вариант — она должна быть замедлена процентов на 10 от номинальной скорости.
2004? Товарищ взял P4? Речь о играх или обычной работе, включая разработку? Если последнее и цена равна — извините, не верю, Вы что-то путаете. Если вы взяли что-то сильно дешёвое, типа дюрона — верю, но это уже не сравнение.
Я б не ставил perl «в один ряд с», кабы не одна ситуация — рассказываю именно в таком виде, как сам столкнулся, чтобы живее было:) VoIP свич, конфигуратор передаёт правила раутинга. Управляющий код на Perl, трансфер правил в YAML. Тестеры говорят «нихрена не работает», идём разбираться... тестовые префиксы номеров вида 000999 передаются в свич в виде... 999! Пока YAML dumper’у не сказали, что все скаляры считать строками, он не начал правильно посылать. Оказалось, что средствами самого языка нельзя отличить скаляр — число от скаляра — представления этого числа в виде строки... на уровне C и работы со структурой SV — можно, да кто ж туда пойдёт возиться. То, что операции разделены — уже хорошо — не такой кошмар, но невозможность различить типы скаляра местами очень вредит. А хохмы типа «0» как false, но «00» как true? Это из той же оперы:( В Питоне сделано лучше — любая непустая строка это true, а если предполагается число — зовите int() явно.