LINUX.ORG.RU

Что курили разработчики JavaScript?

 , , ,


1

1

Вот взять хотя бы parseInt() без указания системы счисления — кому вообще в трезвом уме может понадобиться значение в восьмеричной системе? Или new Array(100500) — нафига мне 100500 undefined? А ещё там вообще нет look-behind регулярок, присутствующих во всех приличных языках (в т.ч. PHP), это же совсем отстой! Не говоря уже обо всякой мозговыносящей фигне типа Math.min() > Math.max() или typeof(NaN). Зачем это говно мочу из граблей и костылей для нескучного выпадения снежинок хотят пихать на сервера и где взять такие же вещества? Дискасс.

Ответ на: комментарий от webmak

вот ты считаешь это прострелом, а я гибкостью

Отлично. Теперь покажи где эта „гибкость” применяется на практике.

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

http://habrahabr.ru/post/178271/ parseInt(«042») === 42 кто мешает доп обработчик для проверки писать? это же относится к php.

компиляторы для c++ разное выдают, а ты хочеш, чтоб браузеры одинаковое? и да, для кросбраузерности много либ есть, которые много ньюансов устраняют.

webmak ★★
()
Последнее исправление: webmak (всего исправлений: 1)
Ответ на: комментарий от h578b1bde

http://www.w3schools.com/js/js_arrays.asp это по var points = new Array(40, 100); // Creates an array with two elements (40 and 100)

А теперь представь, что тебе нужно создать матрицу и тугда пихать все, и потом посмотреть насколько данные полные? var points = new Array(40); // Creates an array with 40 undefined elements !!!!!

webmak ★★
()
Последнее исправление: webmak (всего исправлений: 3)
Ответ на: комментарий от webmak

кто мешает доп обработчик для проверки писать?

Дабы самому свою тушку не прострелить можно и в бронежилете всё время находиться, стоя на костылях с надетым презервативом для надёжности. Только незачем.

а ты хочеш, чтоб браузеры одинаковое?

Здесь проблема не в браузерах, а в дебильном стандарте.

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

Это следствие таких стандартов.

h578b1bde ★☆
() автор топика
Ответ на: комментарий от webmak

и потом посмотреть насколько данные полные

typeof? in? Нет, не слышал.

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

ок, какой язык классно стандартизирован? я работал с pascal, c++, vb, php, js все они имеют дыры. c++ к примеру на разных машинах ведет себя по разному(это окромя компиляторов) и что язык говно? или доп проверка не нужна?

webmak ★★
()
Последнее исправление: webmak (всего исправлений: 4)
Ответ на: комментарий от h578b1bde

Это следствие таких стандартов.

есть общий стандарт, но каждый из разработчиков браузеров, считает, что нужно реализовать свои фишки

webmak ★★
()
Последнее исправление: webmak (всего исправлений: 1)
Ответ на: комментарий от webmak

и что язык говно?

Да, ибо он состоит из костылей, перемотанных синей изолентой для героического преодолевания проблем вместо решения задачи.

или доп проверка не нужна?

Можно быть сапёром и ходить по минному полю или можно не иметь таких навыков и ходить по улице. Мне больше по душе второй вариант.

какой язык классно стандартизирован?

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

h578b1bde ★☆
() автор топика

Зачем это говно мочу из граблей и костылей для нескучного выпадения снежинок хотят пихать на сервера и где взять такие же вещества?

что ты хочешь от хипстеров — они вообще его на скорую руку слепили, а потом какой-то маркетинговый дройд решил, что Java в названии будет +10500 к ынтерпрайзнутости. почитай откровения авторов JS и также Jamie Zawinski в книжке «Coders At Work», там весь этот позор по шагам расписан. ИСЧХ, автор типа рамуса, автора PHP лепит в несознанку, и типа «хотели как лучше», и «миллион мух — это успех».

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

что ты хочешь от хипстеров — они вообще его на скорую руку слепили, а потом какой-то маркетинговый дройд решил, что Java в названии будет +10500 к ынтерпрайзнутости. почитай откровения авторов JS и также Jamie Zawinski в книжке «Coders At Work», там весь этот позор по шагам расписан. ИСЧХ, автор типа рамуса, автора PHP лепит в несознанку, и типа «хотели как лучше», и «миллион мух — это успех».

Жесть, спасибо за книжку.

h578b1bde ★☆
() автор топика
Ответ на: комментарий от webmak

ньюансов

Убивать. Убивать. Убивать.

anonymous
()

кому вообще в трезвом уме может понадобиться значение в восьмеричной системе?

Криптографам и кодировальщикам. Да и всякий низкоуровневый матан с ней гораздо лучше получается.

нафига мне 100500 undefined?

Никто не заставляет.

Зачем это говно мочу из граблей и костылей для нескучного выпадения снежинок хотят пихать на сервера

Зря. Яваскрипт прекрасно подходит для исполнения на стороне клиента, но в серверах оно ни к чему.

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

Рак, уходи.

поздно, уже пустил метастазы

не согласен что c++ на разный архитектурах ведет себя по разному?

webmak ★★
()
Последнее исправление: webmak (всего исправлений: 1)
Ответ на: комментарий от Goury

Криптографам и кодировальщикам. Да и всякий низкоуровневый матан с ней гораздо лучше получается.

Ага, в JavaScript. Особенно в Chrome и его клонах. Логичнее было бы по умолчанию считать всё в десятичной системе, а если вдруг нужны другие — передавать соответствующий второй параметр, а не гадать на кофейной гуще.

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

Именно в яваскрипте и нужен.
А если тебе не нужен, то может и яваскриптом пользоваться нехер?
Эффекты оформлять надо на css, без скриптов.
В вёрстке скрипты тоже не нужны.
А для обработки событий и подгрузки контента рассчёты никакие не нужны вообще.

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

А если тебе не нужен, то может и яваскриптом пользоваться нехер?

Они её гвоздями туда прибили что ли? Тогда да, нахер такое говно не нужно.

Эффекты оформлять надо на css, без скриптов.

И много ты на CSS оформишь? Там даже переменных нет чтобы значения каких-то параметров или координаты сохранять. На данном этапе своего развития CSS больше подходит для обезьян, любящих говнять километровые простыни одних и тех же значений, т.е. язык, созданный для уменьшения повторяемости вынуждает повторяться, лол. Но да, без него и без JS в вебе из-за отсутствия альтернатив не обойтись, кроме разве что использования языков более высокого уровня с транслятором в CSS и JS.

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

Насчет CSS ты прав, писать на нем может только аутист, с хорошей памятью и полным отсутствием мозга.

Но по поводу js — ты просто его не понял. Там есть недостатки, да. Но его достоинства тысячекратно перекрывают их. На сегодняшний день среди распространенных языков, с ним может сравниться лишь руби и луа. Это очень мощный язык, просто фантастически мощный. Проблема в том, что писать на нем могут единицы.

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

Среди разного рода хомячков-хипстеров, и жабабыдла, ходят поверья, что трансляторы в JS нужны. Возьмем для примимера наиболее популярный «ну о-о-очень высокоуровневый» транслятор coffee. Пример взят с главной страницы их офсайта

http://coffeescript.org/

По их мнению хомячки должны восхитится и проникнуться вот таким примером:

class Animal
  constructor: (@name) ->

  move: (meters) ->
    alert @name + " moved #{meters}m."

class Snake extends Animal
  move: ->
    alert "Slithering..."
    super 5

class Horse extends Animal
  move: ->
    alert "Galloping..."
    super 45

sam = new Snake "Sammy the Python"
tom = new Horse "Tommy the Palomino"

sam.move()
tom.move()

В сравнении с «плохим» читсым JS, на котором, по их мнению, код этот должен выглядеть вот так:


var Animal, Horse, Snake, sam, tom,
  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
  hasProp = {}.hasOwnProperty;

Animal = (function() {
  function Animal(name) {
    this.name = name;
  }

  Animal.prototype.move = function(meters) {
    return alert(this.name + (" moved " + meters + "m."));
  };

  return Animal;

})();

Snake = (function(superClass) {
  extend(Snake, superClass);

  function Snake() {
    return Snake.__super__.constructor.apply(this, arguments);
  }

  Snake.prototype.move = function() {
    alert("Slithering...");
    return Snake.__super__.move.call(this, 5);
  };

  return Snake;

})(Animal);

Horse = (function(superClass) {
  extend(Horse, superClass);

  function Horse() {
    return Horse.__super__.constructor.apply(this, arguments);
  }

  Horse.prototype.move = function() {
    alert("Galloping...");
    return Horse.__super__.move.call(this, 45);
  };

  return Horse;

})(Animal);

sam = new Snake("Sammy the Python");

tom = new Horse("Tommy the Palomino");

sam.move();

tom.move();

Очевидно, что в подобное говно и транслирует код их говнотранслятор.

Если бы у этих аутичных созданий, было какое-то представление о JS, они смогли бы реализовать этот кейз например так:


Animal={
 create: function(name){
   var o=Object.create(this); o.name=name; return window[name]=o
 },
 init: function(action, meters){this.action=action; this.meters=meters},
 move: function(){
  alert(this.action+"\n"+this.name+" the "+this.__proto__.name+" moved "+this.meters+"m.")}
}

Animal.create("Horse").init("Galloping...", 5)
Animal.create("Snake").init("Slithering...", 45)

Horse.create("Tommy")
Snake.create("Sammy")

Tommy.move()
Sammy.move()

Это практически эквивалентно по длине их говну. Но! Коды-то не эквивалентны. То есть, они эквивалентны в плане решения задачи, но код «великих мастеров» отжирает в десятки и сотни раз больше памяти(потому как эти дауны пользуют миксины вместо делегирования) и, что существенней, сосет в плане расширяемости и гибкости. Иными словами, их транслятор практически не выигрывает в плане лаконичности (это синтетический пример, на реальном коде coffee сольет чистому JS и в этом, причем нехило), и при этом, он генерит тормозное и неюзабельное жирное говно.

Делай выводы.

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