The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Linux Foundation представил инициативу по развитию открытых ..., opennews (ok), 18-Окт-16, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


44. "Linux Foundation представил инициативу по развитию открытых ..."  +4 +/
Сообщение от Аноним (-), 18-Окт-16, 17:19 
> А вот и хейтеры подтянулись. Ну-ка, расскажи нам про свои стандартные null,
> undefined и leftpad.

Вообще-то знакомые жабо-скриптники, владеющие помимо ЖыСы еще одним языком, вполне подтверждают костыльнось ЖС.
И только те, кто слаще морковки ничего не нюхал, продолжают отважно защищать этот набор костылей, подпорок, картона и скотча.


Ответить | Правка | Наверх | Cообщить модератору

47. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Аноним (-), 18-Окт-16, 18:17 
Приведи пример костыльности. Твои знакомые могли тебя просто попугать, чтоб себе лишний раз конкурентов не создавать.
Ответить | Правка | Наверх | Cообщить модератору

54. "Linux Foundation представил инициативу по развитию открытых ..."  –2 +/
Сообщение от Аноним (-), 18-Окт-16, 20:28 
Жабоскриптомакак и так как собак.
Ответить | Правка | Наверх | Cообщить модератору

61. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Аноним (-), 19-Окт-16, 00:09 
> Приведи пример костыльности. Твои знакомые могли тебя просто попугать, чтоб себе лишний
> раз конкурентов не создавать.

И раз:


> 9999999999999999==10000000000000000

< true
> -42 < Number.MIN_VALUE

< true
> -0 < Number.MIN_VALUE

< true
> 0 < Number.MIN_VALUE

< true
> +0 < Number.MIN_VALUE

< true
> +1 < Number.MIN_VALUE

< false

И два:
http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3


> "\n" == 0

< true
> "\n\t\n" == 0

< true
> "\n\r\n 16 \t\n" == 16
> [1,2,3] == "1,2,3"

< true
> [123] == 123

< true

Опять же, классические факапы слабой типизации, типа "1"+2 = "12".
Ну и implied globals, куда же без них.


> function foo() {y=10}

< undefined
> foo()

< undefined
> x=y

< 10
}


Я понимаю, что оно, благодаря динамизму пройдет на ура, пусть будет так. Но вот нафига делать из "y" сразу глобально доступную переменную?
А области действия? Костыляние засовыванием в функцию, как единственную возможность ограничить scope, уже починили?

Но если для вас это норма ... тогда ладно, пусть будет отлично продуманным и реализованным языком *рукалицо.png*

Ответить | Правка | К родителю #47 | Наверх | Cообщить модератору

63. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Аноним (-), 19-Окт-16, 01:59 
А вот и более-менее "конструктивная" критика прямиком из 2003-го.

> 9999999999999999==10000000000000000

Ок. Сравниваем Number.MAX_SAFE_INTEGER с твоим числом:

> 9007199254740991 // Number.MAX_SAFE_INTEGER
> 9999999999999999

Вывод: ССЗБ, для заведомо больших чисел во всех языках пользуются либами вроде BigNumber. Опровергнуто. Хорошо еще про http://0.30000000000000004.com не вспомнил. Идем далее:

> -42 < Number.MIN_VALUE; // => true

Читаем доки: The Number.MIN_VALUE property represents the smallest <b>positive</b> numeric value representable in JavaScript. Опровергнуто. (Или положительное число должно быть меньше отрицательного? Лол.) Идем далее:

> "\n" == 0
> "\n\t\n" == 0
> [etc.]

Сам написал, сам же и опровергнул: http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 -- нестрогое равенство всегда используют на свой страх и риск, хотя определенное удобство в этом есть (например, нестрого сравнивая с null можно заодно проверить, не равен ли undefined, так что не надо писать километровые условия вроде variable === null || variable === undefined). Идем далее:

> классические факапы слабой типизации, типа "1"+2 = "12".

А если бы в итоге получили число 3, то нашелся бы другой чувак, который спросил: "ээ, а какого возвращается число, а не строка?" То есть тут дело конвенции, а не знать конвенцию -- ССЗБ. Авторы решили, что лучше пусть будет одно из двух поведений, а не кидаться сразу исключениями на каждый чих. Очень удобно кстати делать myVariable + '' вместо myVariable.toString(). Если делать "по-строгому, по-науке", то template string-и выглядели бы примерно так: `Привет, ${user.name.toString()}, у вас ${unread.toString()} непрочитанных сообщений` вместо `Привет, ${user.name}, у вас ${unread} непрочитанных сообщений`. Опровергнуто.

> implied globals, куда же без них

В strict-режиме вывалится с исключением: Uncaught ReferenceError: y is not defined. Твои претензии актуальны где-нибудь на 2003-й год. Опровергнуто.

> Костыляние засовыванием в функцию, как единственную возможность ограничить scope, уже починили?

С разморозкой:

if (true) {
  const hello = 'world';
}
console.log(hello); // => Uncaught ReferenceError: hello is not defined

Ответить | Правка | Наверх | Cообщить модератору

68. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Аноним (-), 19-Окт-16, 03:55 
>> 9999999999999999==10000000000000000
> Ок. Сравниваем Number.MAX_SAFE_INTEGER с твоим числом:
>> 9007199254740991 // Number.MAX_SAFE_INTEGER
>> 9999999999999999

Явность и некостыльность прям изо всех щелей, да.

> Вывод: ССЗБ, для заведомо больших чисел во всех языках пользуются либами вроде BigNumber.

Да ну?


>>> 9000000000000000000000000 == 10000000000000000000000000

False
>>> 2**1234

29581122460809862906004469571610359078633968713537299223955620705065735079623892426105383
72483780501864436477590709559931208208993303817609370272124828409449413621106654437751834
95726811929203861182015218323892077355983393191208928867652655993602487903113708549402668
62452110061179427034023276609931709804888749380902312739825386061877261903500988327294112
9544640111837184L


1 ?- 9000000000000000000000000 == 10000000000000000000000000.
false.
4 ?- X is 2**1234.
X = 295811224608098629060044695716103590786339687135372992239556207050657350796238924261053837248378050186443647759070955993120820899330381760937027212482840944941362110665443775183495726811929203861182015218323892077355983393191208928867652655993602487903113708549402668624521100611794270340232766099317098048887493809023127398253860618772619035009883272941129544640111837184.

>> "\n" == 0
>> "\n\t\n" == 0
>> [etc.]
> Сам написал, сам же и опровергнул: http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3

Вопрос, как бы, был о костыльности и куча специальных правил для сравнения  ... ну ладно, пусть будет очередной офигительной фичей.

>> классические факапы слабой типизации, типа "1"+2 = "12".
> А если бы в итоге получили число 3, то

То это, внезапно, была бы все та же слабая типизация.
> То есть тут дело конвенции, а не знать конвенцию -- ССЗБ.

Конвенция тут -- слабая типизация. Ваш Кэп.

> Если делать "по-строгому, по-науке", то
> template string-и выглядели бы примерно так: `Привет, ${user.name.toString()}, у вас ${unread.toString()}
> непрочитанных сообщений` вместо `Привет, ${user.name}, у вас ${unread} непрочитанных
> сообщений`.

А вот это вообще из другой оперы. И записывается, кстати, примерно таким макаром даже в хаскеле.
А если по простому, то в этом случае, вполне явно и очевидно ожидается строка. И если у объекта есть метод "toString",  то ...

> Опровергнуто.

Потому что удобнее и вообще, гладиолус!


Ответить | Правка | Наверх | Cообщить модератору

69. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от roman (??), 19-Окт-16, 05:41 
> Вывод: ССЗБ, для заведомо больших чисел во всех языках пользуются либами вроде BigNumber. Опровергнуто.

Python

In [13]: 9999999999999999999==10000000000000000000
Out[13]: False

> А если бы в итоге получили число 3, то нашелся бы другой чувак, который спросил: "ээ, а какого возвращается число, а не строка?"

нашелся бы, но было можно еще и так

In [14]: 1 + "2"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-b88986c5ffd8> in <module>()
----> 1 1 + "2"

TypeError: unsupported operand type(s) for +: 'int' and 'str'

> Читаем доки

Да на каждый пчих читаем доки (man javascript)

code to char
> String.fromCodePoint(123)

'{'
как обратно (забыл)

> String.

...
String.fromCharCode          String.fromCodePoint         String.prototype             String.raw

а,  конечно fromCharCode из char в code!
> String.fromCharCode('{')

'\u0000'

уупс...

> '{'.charCodeAt(0)

123

> нестрогое равенство всегда используют на свой страх и риск

то есть, лучше бы не было вообще ==

> хотя определенное удобство в этом есть

когда пишешь первый в жизни hello world - безусловно.

> Хорошо еще про http://0.30000000000000004.com не вспомнил. Идем далее:

да еще не вспомнили про this, который как не пиши может оказаться не тем, что ты думал

реально же самые влиятельные фигуры в JS мире говорят, что это досадные баги, которые не исправляются только из легаси...
Но язык конечно движется в правильном направлении. Kак правильно сегодня пройти по всем ключам в объекте?

Object.keys(obj).forEach(key => {
    var value = obj[key];
    console.log(key, value);
});

просто и выразительно - не то, что у некоторых

for key, value in obj.items():
    print(key, value)

и конечно нельзя использовать то что написано на людьми которые на это языке пишут

_.forEach(obj, (value, key) =>
       console.log(key, value) )


Object.keys почему не Object.prototype.keys, а да из-за того, что поломан (for name in obj){}
Object.assign это extend, почему от тогда не называется так?

Ответить | Правка | К родителю #63 | Наверх | Cообщить модератору

74. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от synweap (ok), 19-Окт-16, 11:30 
> Python

Хорошо, признаю, в питоне действительно с этим все ок. Можно засчитать за по-настоящему конструктивный аргумент.

> но было можно еще и так
> TypeError: unsupported operand type(s) for +: 'int' and 'str'

Можно, но тогда и `У вас ${unread} сообщений` должен был бы отвалиться. (Не забываем о том, что template string - это всего лишь сахарок.)

> конечно fromCharCode из char в code!

Читаем доки: The static String.fromCharCode() method returns a string created by using the specified sequence of Unicode values. То есть ты перепутал вход и выход, такое бывает у тех, кто пренебрежительно пишет:

> Да на каждый пчих читаем доки (man javascript)

Идем далее:

> то есть, лучше бы не было вообще ==

Нет, лучше бы оно было, в некоторых случаях лучше только им и пользоваться (при сравнении с null например).

> еще не вспомнили про this, который как не пиши может оказаться не тем, что ты думал

А в чем проблема? Уже добавили синтаксический сахар для преодоления этого:

было: var bound = function () { return this.name }.bind(this);
стало: const bound = () => this.name;

> реально же самые влиятельные фигуры в JS мире говорят, что это досадные баги, которые не исправляются только из легаси

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

> Kак правильно сегодня пройти по всем ключам в объекте?

for (let key of Object.keys(object)) {
  console.log(key);
}

> Object.keys почему не Object.prototype.keys

А Object.prototype и так засран (hasOwnProperty например), так что не надо туда еще что-то новое пихать.

> Object.assign это extend, почему от тогда не называется так?

Директория vs папка, приложение vs программа, etc.

Ответить | Правка | Наверх | Cообщить модератору

75. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Аноним (-), 19-Окт-16, 11:40 
> Можно, но тогда и `У вас ${unread} сообщений` должен был бы отвалиться.

Все еще нет.
> А ведь скромненько так начинал, со "своих знакомых друзей".

Вообще-то это был не он. Инфа 146%.

Ответить | Правка | Наверх | Cообщить модератору

76. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от synweap (ok), 19-Окт-16, 12:33 
> > Можно, но тогда и `У вас ${unread} сообщений` должен был бы отвалиться.
> Все еще нет.

Должен, так как это сахарок над тем же самым 'У вас ' + unread + ' сообщений'.

Ответить | Правка | Наверх | Cообщить модератору

77. "Linux Foundation представил инициативу по развитию открытых ..."  +1 +/
Сообщение от Аноним (-), 19-Окт-16, 14:01 
>> > Можно, но тогда и `У вас ${unread} сообщений` должен был бы отвалиться.
>> Все еще нет.
> Должен, так как это сахарок над тем же самым 'У вас ' + unread + ' сообщений'.

Если вы имели в виду конкретную реализацию, то это частности и проблемы этой конкретной реализации. Из-за этого утверждать, что такая запись без слабой типизации была бы невозможна ...  даже не смешно. Ничто не мешало сделать сахарок над
"foo {} bar {}".format(name, unread)


Ответить | Правка | Наверх | Cообщить модератору

78. "Linux Foundation представил инициативу по развитию открытых ..."  –2 +/
Сообщение от Undefined (?), 19-Окт-16, 15:31 
>ко-ко-ко, динамизм

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

Ответить | Правка | К родителю #61 | Наверх | Cообщить модератору

80. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Аноним (-), 19-Окт-16, 23:31 
>>ко-ко-ко, динамизм

Увы, моя твоя не понимать :(

> Плаваешь в терминах,
> Примеры, которые ты привел вызваны нестрогой
> типизацией, а не динамичностью. Питон тоже динамичный, но теплое с мягким
> там нельзя сложить, например.

Т.е. приствоение необъявленной переменной какого-либо значения проходит как нестрогая типизация? Ну тогда да, я плаваю в терминах вашей параллельной жабаскрипт-вселенной. А может, все же, кое-кто увидел знакомое слово и поспешил высказать свое кукаруку (или как там правильно)?

Ответить | Правка | Наверх | Cообщить модератору

62. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Аноним (-), 19-Окт-16, 01:13 
>Вообще-то знакомые жабо-скриптники, владеющие помимо ЖыСы еще одним языком, вполне подтверждают костыльнось ЖС.

Давай, лучше расскажи нам что там у вас правильное без костылей? Пыхыпы в котором гц не работает? Пистон с gil и который в 3.0 поломали и никто переходить не думает? Или может сразу цэпэпэ?

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

70. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от roman (??), 19-Окт-16, 06:00 
как у nodejs с multi-core utilisation?
>  который в 3.0 поломали и никто переходить не думает

не поломали, а починили. уже перешли, ещё год назад это замечание было бы актуально

Ответить | Правка | Наверх | Cообщить модератору

67. "Linux Foundation представил инициативу по развитию открытых ..."  +/
Сообщение от Отражение луны (ok), 19-Окт-16, 02:30 
Работал с пыхой, с++, джавой, дельфей, и всякой другой ерундой. И да, все - помойка, кроме jsа.
Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру