JavaScript is a most important language in the world?
От: c-smile Канада http://terrainformatica.com
Дата: 05.03.07 07:16
Оценка:
Из веселой и примечательно интересной статьи Steve Yegge (former Amazon, now Google)..

JavaScript is probably the most important language in the world today. Funny, huh? You'd think it would be Java or C++ or something. But I think it just might be JavaScript.


One big problem is that it's JavaScript. Nobody wants to use JavaScript.

I'm serious. It's not that it's a bad language (it's not); it's just not the language they want to use. You know. Them. You. Everyone who has a favorite programming language. Most people only want to use one, their favorite, whatever they're best with, and when they switch to a different one, they're slower. They feel stifled, held back, uncomfortable. That feeling goes away in under a month of immersion in a new language, but most engineers begrudge that time fiercely, probably because they don't realize it's only a month.


Советую глянуть на статью хотя бы поперек. Досталось всем и Мозилле и Микрософт.

Ну и традиционно "про Ruby-on-Rails только хорошее"

So as soon as "Scheme on Skis" or "JavaScript on Jets" or whatever comes along, that Rails-like radical simplification of the huge ugly Browser Swamp, the game will change almost overnight.

Re: JavaScript is a most important language in the world?
От: anonymous Россия http://denis.ibaev.name/
Дата: 05.03.07 07:23
Оценка: +2
Здравствуйте, c-smile, Вы писали:

CS>Советую глянуть на статью хотя бы поперек. Досталось всем и Мозилле и Микрософт.


А ссылку?
Re[2]: JavaScript is a most important language in the world?
От: Mamut Швеция http://dmitriid.com
Дата: 05.03.07 08:06
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Здравствуйте, c-smile, Вы писали:


CS>>Советую глянуть на статью хотя бы поперек. Досталось всем и Мозилле и Микрософт.


A>А ссылку?



Я так понимаю, здесь: http://steve-yegge.blogspot.com/2006/09/bloggers-block-3-dreaming-in-browser.html


dmitriid.comGitHubLinkedIn
Re: JavaScript is a most important language in the world?
От: Mamut Швеция http://dmitriid.com
Дата: 05.03.07 08:57
Оценка: 1 (1) :)))
Здравствуйте, c-smile, Вы писали:

CS>Из веселой и примечательно интересной статьи Steve Yegge (former Amazon, now Google)..


Мне нравится, как он встает на защиту Веб-программистов

Примажусь к славе , я об этом тоже писал:
здесь

Веб-програмисты среди нашей програмистской братии считаются этакими маргиналами. Их и за програмистов-то особо не считают. И в самом деле считается, что создать что-нибудь вроде того-же RSDN'a — плевое дело. А вот написать очередную глючную бухгалтерскую програмку за два дня на коленке в Object Oascal'e (он же Delphi) или .NET'e — это да, это честь и почет...


и также здесь


dmitriid.comGitHubLinkedIn
Re[3]: JavaScript is a most important language in the world?
От: anonymous Россия http://denis.ibaev.name/
Дата: 06.03.07 11:38
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Я так понимаю, здесь: http://steve-yegge.blogspot.com/2006/09/bloggers-block-3-dreaming-in-browser.html


Странный он, описывает как сложно написать *оконное* приложение на платформе Mozilla, и говорит, что предпочёл бы написать на Python:
print "Hello, world!"

За идиотов читателей держит, сравнивая оконное приложение с выводом в одной строки в консоль?
Re[4]: JavaScript is a most important language in the world?
От: Mamut Швеция http://dmitriid.com
Дата: 06.03.07 12:57
Оценка:
M>>Я так понимаю, здесь: http://steve-yegge.blogspot.com/2006/09/bloggers-block-3-dreaming-in-browser.html

A>Странный он, описывает как сложно написать *оконное* приложение на платформе Mozilla, и говорит, что предпочёл бы написать на Python:

A>
A>print "Hello, world!"
A>

A>За идиотов читателей держит, сравнивая оконное приложение с выводом в одной строки в консоль?

Там текст такой:

But my God, it's sooooooo ugly. It's got well over a decade of ugly packed in there. "Hello, World" in Mozilla is six or seven files in as many different languages. I kid you not. It's worse than Hello, World was back in the Petzold days of Win32 programming. You have your XUL file and your JavaScript file and your CSS file and your manifest.rdf and your i18n.something and I can't remember what all else. And then you have to build them together (using some other files) to make even more files: a JAR file and an XPI file at a minimum. That's one gnarly-ass introductory program.

Но боже мой, это все настоооолько страшно. Более 10 лет устрашнения. "Hello, world" в Мозилле — это 6 или 7 файлов в стольких же языковых версиях. Я не шучу. Это хуже, чем Hello, World во времена Петцольда и программирования под win32. У вас есть XUL-файл и Javascript-файл, и CSS файл manifest.rdf и i18.что-то-там, и я даже не вспомню, что еще. После этого вам надо их собрать вместе (используя еще другие файлы) для того, чтобы создать еще больше файлов: как минимум, JAR и XPI. Это полная ж.., а не вводная программа.


И дальше следует фраза:

Me, I kinda prefer Python's version:
print "Hello, world!"
Color me silly with font="red", but it just seems cleaner to me.

Я лично предпочитаю питоновскую версию:
print "Hello, world!"
Сичтайте меня дураком за мою любовь к font="red", но такой подход мне кажется чище


Он гиперболизирует, конечно, но идея понятна. Для того, чтобы стать нормальной платформой, Мозилле надо упростить многие вещи. Может, и не до уровня print "Hello, world!". Но 6-7 файлов для создания такое приветствия — это слишком.

И дальше он иллюстрирует эту идею кодом, получающим список закладок из браузера:

//сам код поскипан, он ужасен
Shouldn't there be a "getBookmarks()" in there somewhere? I mean, what is all that crap?

Разве там не должно быть "getBookmarks()" где-то внутри? В том смысле, что непонятно, что все это дербмо там делает...



dmitriid.comGitHubLinkedIn
Re[5]: JavaScript is a most important language in the world?
От: anonymous Россия http://denis.ibaev.name/
Дата: 06.03.07 13:11
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Он гиперболизирует, конечно, но идея понятна. Для того, чтобы стать нормальной платформой, Мозилле надо упростить многие вещи. Может, и не до уровня print "Hello, world!". Но 6-7 файлов для создания такое приветствия — это слишком.


Вот именно для "Hello, world!" понядобится один файл, собственно XUL, описывающий окно. А потом уже, есои нужно приложение, то плюс 1 файл описывающий, что где лежит, и 1 конфигурационный файл. Плюс один файл, если нужна локализация (точнее по одному для каждого языка). Плюс один файл, если хочется поменять внешний вид. То есть "лишние" файлы появляются по мере обрастания фичами, а не так, как он рассказал.

M>И дальше он иллюстрирует эту идею кодом, получающим список закладок из браузера:

M>

M>//сам код поскипан, он ужасен
M>Shouldn't there be a "getBookmarks()" in there somewhere? I mean, what is all that crap?
M>Разве там не должно быть "getBookmarks()" где-то внутри? В том смысле, что непонятно, что все это дербмо там делает...


Аха, взял один из древнейших и наверное самый страшный интерфейс и им иллюстрирует.
Re[6]: JavaScript is a most important language in the world?
От: Mamut Швеция http://dmitriid.com
Дата: 06.03.07 14:02
Оценка: :))
A>Аха, взял один из древнейших и наверное самый страшный интерфейс и им иллюстрирует.

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


dmitriid.comGitHubLinkedIn
Re[7]: JavaScript is a most important language in the world?
От: anonymous Россия http://denis.ibaev.name/
Дата: 06.03.07 14:17
Оценка:
Здравствуйте, Mamut, Вы писали:

A>>Аха, взял один из древнейших и наверное самый страшный интерфейс и им иллюстрирует.

M>Ну дык я не виноват, я только объяву разместил

Да понятно, что мопед не твой. )
Re[6]: JavaScript is a most important language in the world?
От: c-smile Канада http://terrainformatica.com
Дата: 06.03.07 21:50
Оценка: +2 :)
Здравствуйте, anonymous, Вы писали:

A>Аха, взял один из древнейших и наверное самый страшный интерфейс и им иллюстрирует.


А этот код тобой приведенныый:
http://rsdn.ru/Forum/Message.aspx?mid=2394074&only=1
Автор: anonymous
Дата: 05.03.07

он как? к более свежим относится?

Может предлжить ему его использовать в статье?

С комментарием:

Вот так легко...
A>Теперь у нашей кнопки (здесь опитывается кнопка панели инструментов), есть свой конструктор, свои поля (в том числе и read only) и свои методы. А кроме того она ещё и реализует интерфейс nsIObserver, т. е. способна работать обсервером.

Мягко говоря странный способ описывать классы объектов если честно.
Re[7]: JavaScript is a most important language in the world?
От: anonymous Россия http://denis.ibaev.name/
Дата: 07.03.07 07:11
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, anonymous, Вы писали:


A>>Аха, взял один из древнейших и наверное самый страшный интерфейс и им иллюстрирует.


CS>А этот код тобой приведенныый:

CS>http://rsdn.ru/Forum/Message.aspx?mid=2394074&only=1
Автор: anonymous
Дата: 05.03.07

CS>он как? к более свежим относится?
CS>Может предлжить ему его использовать в статье?
CS>С комментарием:

А у меня там тоже работа с RDF. ) Тот же самый интерфейс.

Вот, например, вычисление MD5-хеша некоторой строки:
function getMD5(aData)
{
    // Конвертируем данные в массив.
    var converter = Components
            .classes["@mozilla.org/intl/scriptableunicodeconverter"]
            .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
    converter.charset = "UTF-8";
    var result = {};
    var data = converter.convertToByteArray(aData, result);

    // Получаем MD5.
    var crypto = Components
            .classes["@mozilla.org/security/hash;1"]
            .createInstance(Components.interfaces.nsICryptoHash);
    crypto.init(crypto.MD5);
    crypto.update(data, data.length);
    var hash = crypto.finish(false);

    // Переводим в строковое представление.
    var hex = "";
    for (var i = 0; i < hash.length; i++)
       hex += hash.charCodeAt(i).toString(16);
    return hex;
}

Где здесь описанные ужасы?
Re[8]: JavaScript is a most important language in the world?
От: Mamut Швеция http://dmitriid.com
Дата: 07.03.07 08:44
Оценка:
A>Где здесь описанные ужасы?

Эээ нет Там должно быть что-то вроде
<implementation>
    <method name="getMD5">
        <parameter name="aData"/>
        <body><![CDATA[
            // Конвертируем данные в массив.
            var converter = Components
                .classes["@mozilla.org/intl/scriptableunicodeconverter"]
                .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
            converter.charset = "UTF-8";
            var result = {};
            var data = converter.convertToByteArray(aData, result);
            
            // Получаем MD5.
            var crypto = Components
                .classes["@mozilla.org/security/hash;1"]
                .createInstance(Components.interfaces.nsICryptoHash);
            crypto.init(crypto.MD5);
            crypto.update(data, data.length);
            var hash = crypto.finish(false);
            
            // Переводим в строковое представление.
            var hex = "";
            for (var i = 0; i < hash.length; i++)
            hex += hash.charCodeAt(i).toString(16);
            return hex;
        ]]></body>
    </method>
</implementation>


А это — уже ужас. Причем непонятно, зачем созданный

Ну и так далее. Например:
Зачем:
var converter = Components
                .classes["@mozilla.org/intl/scriptableunicodeconverter"]
                .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
var crypto = Components
                .classes["@mozilla.org/security/hash;1"]
                .createInstance(Components.interfaces.nsICryptoHash);

Когад можно:
var converter = new Components.Scriptable.UnicodeConverter;
var converter = new Components.Crypto.Hash;


и т.п.


dmitriid.comGitHubLinkedIn
Re[2]: JavaScript is a most important language in the world?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.03.07 09:00
Оценка: +1 :))
Здравствуйте, anonymous, Вы писали:

A>А ссылку?


Не, ну, странный ты право.
Кому в наше время нужны ссылки? Копипэст в гугль и вперед!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: JavaScript is a most important language in the world?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.03.07 09:00
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Он гиперболизирует, конечно, но идея понятна. Для того, чтобы стать нормальной платформой, Мозилле надо упростить многие вещи. Может, и не до уровня print "Hello, world!". Но 6-7 файлов для создания такое приветствия — это слишком.


Ну, а что вы хотите если эти АПИ пишут те же уроды что писали АПИ для Линукса и Виндовс?!

Тут тогда уж в пору открывать тему об уродливсоти большинтва АПИ, тех долболомах которые их создают, и того что подвигает их к подобному "творчеству".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: JavaScript is a most important language in the world?
От: anonymous Россия http://denis.ibaev.name/
Дата: 07.03.07 10:12
Оценка:
Здравствуйте, Mamut, Вы писали:

A>>Где здесь описанные ужасы?

M>Эээ нет Там должно быть что-то вроде

Зачем? Мы ж не binding обсуждаем, а работу с интерфейсами.

M>А это — уже ужас. Причем непонятно, зачем созданный


Вот и мне не понятно, зачем ты его создал.

M>Ну и так далее. Например:

M>Зачем:
M>
M>var converter = Components
M>                .classes["@mozilla.org/intl/scriptableunicodeconverter"]
M>                .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
M>var crypto = Components
M>                .classes["@mozilla.org/security/hash;1"]
M>                .createInstance(Components.interfaces.nsICryptoHash);

M>Когад можно:
M>
M>var converter = new Components.Scriptable.UnicodeConverter;
M>var converter = new Components.Crypto.Hash;
M>


Ну это уже придирки к мелочам. )

А вообще, создал ты собственный интерфейс nsISuperInterface, полезешь этот Components править? Или напишешь:
var super = Components
                .classes["@mozilla.org/superinterface;1"]
                .createInstance(Components.interfaces.nsISuperInterface);

А может у тебя собственная реализация nsICryptoHash? Лучше придумать ей собственное название или написать:
var crypto = Components
                .classes["@mozilla.org/mycrypto;1"]
                .createInstance(Components.interfaces.nsICryptoHash);

сменив лишь contract id.

Вообще почти так и делается:
var converter = Cс[SCRIPTABLEUNICODECONVERTER_CONTRACTID].createInstance(Ci.nsIScriptableUnicodeConverter);
var crypto = Cс[HASH_CONTRACTID].createInstance(Ci.nsICryptoHash);

а где то определены:
const SCRIPTABLEUNICODECONVERTER_CONTRACTID = "@mozilla.org/intl/scriptableunicodeconverter";
const HASH_CONTRACTID = "@mozilla.org/security/hash;1"
const Cc = Components.classes;
const Ci = Components.interfaces;
Re[10]: JavaScript is a most important language in the world
От: Mamut Швеция http://dmitriid.com
Дата: 07.03.07 10:30
Оценка: +1
A>Зачем? Мы ж не binding обсуждаем, а работу с интерфейсами.

M>>А это — уже ужас. Причем непонятно, зачем созданный


A>Вот и мне не понятно, зачем ты его создал.


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




M>>Ну и так далее. Например:

M>>Зачем:
M>>
//skip code
M>>


A>Ну это уже придирки к мелочам. )


A>А вообще, создал ты собственный интерфейс nsISuperInterface, полезешь этот Components править? Или напишешь:

A>
A>var super = Components
A>                .classes["@mozilla.org/superinterface;1"]
A>                .createInstance(Components.interfaces.nsISuperInterface);
A>

A>А может у тебя собственная реализация nsICryptoHash? Лучше придумать ей собственное название или написать:
A>
A>var crypto = Components
A>                .classes["@mozilla.org/mycrypto;1"]
A>                .createInstance(Components.interfaces.nsICryptoHash);
A>

A>сменив лишь contract id.


Ээээ.. Что-то я запутался Так как слабо представляю, что делает этот код. Магическим образом создает класс, реализубщий только что мною созданный интерфейс ISuperInterface?

Да и что там Components править-то? Функцию extend я уже приводил


A>Вообще почти так и делается:

A>
A>var converter = Cс[SCRIPTABLEUNICODECONVERTER_CONTRACTID].createInstance(Ci.nsIScriptableUnicodeConverter);
A>var crypto = Cс[HASH_CONTRACTID].createInstance(Ci.nsICryptoHash);
A>

A>а где то определены:
A>
A>const SCRIPTABLEUNICODECONVERTER_CONTRACTID = "@mozilla.org/intl/scriptableunicodeconverter";
A>const HASH_CONTRACTID = "@mozilla.org/security/hash;1"
A>const Cc = Components.classes;
A>const Ci = Components.interfaces;
A>




Это мне напоминает:

#define SCRIPTABLEUNICODECONVERTER_CONTRACTID "@mozilla.org/intl/scriptableunicodeconverter";
#define HASH_CONTRACTID "@mozilla.org/security/hash;1"

// ...


Зачем из JavaScript'a делать С/С++/Java?


dmitriid.comGitHubLinkedIn
Re[11]: JavaScript is a most important language in the world
От: anonymous Россия http://denis.ibaev.name/
Дата: 07.03.07 11:57
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Я о том, что непонятно, зачем в байндингах XML, если и так все хорошо описывается просто Яваскриптом?


Дмитрий, байндинги мы обсуждаем в другой теме. Здесь же мы обсуждали статью, в которой о байндингах ни слова. )

M>Ээээ.. Что-то я запутался Так как слабо представляю, что делает этот код. Магическим образом создает класс, реализубщий только что мною созданный интерфейс ISuperInterface?


http://www.xulplanet.com/references/xpcomref/creatingcomps.html

Ты же знаешь как происходит создание COM-объекта в том же браузере:
new ActiveXObject("Excel.Application");

Так вот XP — это кроссплатформенный COM. Однако ж никто не разводит флеймов по поводу отсутствия
new ActiveXObject.Excel.Application;


M>Да и что там Components править-то? Функцию extend я уже приводил


Как зачем? Нам же понадобится Components.SuperInterface. Ты учти только, что там нужно будет подключить динамическую библиотеку, в которой описан этот интерфейс.

M>[ccode]

M>#define SCRIPTABLEUNICODECONVERTER_CONTRACTID "@mozilla.org/intl/scriptableunicodeconverter";
M>#define HASH_CONTRACTID "@mozilla.org/security/hash;1"
M>[ccode]
M>Зачем из JavaScript'a делать С/С++/Java?

Не понял, почему языку запрещено иметь константы? И почему программист не имеет право что-то сократить?
Re[12]: JavaScript is a most important language in the world
От: Mamut Швеция http://dmitriid.com
Дата: 07.03.07 12:52
Оценка: +2
M>>Я о том, что непонятно, зачем в байндингах XML, если и так все хорошо описывается просто Яваскриптом?

A>Дмитрий, байндинги мы обсуждаем в другой теме. Здесь же мы обсуждали статью, в которой о байндингах ни слова. )


Это меня c-smile с пути истинного сбил своим сообщением

M>>Ээээ.. Что-то я запутался Так как слабо представляю, что делает этот код. Магическим образом создает класс, реализубщий только что мною созданный интерфейс ISuperInterface?


A>http://www.xulplanet.com/references/xpcomref/creatingcomps.html


Все равно не понимаю, зачем это нужно

A>Ты же знаешь как происходит создание COM-объекта в том же браузере:

A>
A>new ActiveXObject("Excel.Application");
A>

A>Так вот XP — это кроссплатформенный COM. Однако ж никто не разводит флеймов по поводу отсутствия
A>
A>new ActiveXObject.Excel.Application;
A>


Хм. Помню где-то так позволялось писать. VisualBasic что ли? А насчет флеймов... Привык народ к такой вот кривизне, что поделать

Я просто не понимаю, зачем оно нужно

M>>Да и что там Components править-то? Функцию extend я уже приводил


A>Как зачем? Нам же понадобится Components.SuperInterface. Ты учти только, что там нужно будет подключить динамическую библиотеку, в которой описан этот интерфейс.


Ну только ради подключения динамической библиотеки... Но ради этого городить целый COM, да еще в худших традициях MS COM заставлять программиста ручками писать все эти QueryInterface... Ыыыы... Думаю, введение ключевого слова типа import/using решило бы большинство таких проблем (к чему они итак идут, имхо со своим JavaScript 2).

M>>[ccode]

M>>#define SCRIPTABLEUNICODECONVERTER_CONTRACTID "@mozilla.org/intl/scriptableunicodeconverter";
M>>#define HASH_CONTRACTID "@mozilla.org/security/hash;1"
M>>[ccode]
M>>Зачем из JavaScript'a делать С/С++/Java?

A>Не понял, почему языку запрещено иметь константы? И почему программист не имеет право что-то сократить?


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


dmitriid.comGitHubLinkedIn
Re: JavaScript is a most important language in the world?
От: Quintanar Россия  
Дата: 07.03.07 15:03
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Из веселой и примечательно интересной статьи Steve Yegge (former Amazon, now Google)..


А что тут в последнее время его статьи все постят с таким подтекстом, что его мнение мегаценно? Кто он, собственно, такой? Может он gcc написал или YouTube создал, а может пару мощных языков программирования забабахал или хотя бы ценную книгу написал? Кроме как умением п.., т.е. языком молоть, он чем-нибудь известен?
Re[2]: JavaScript is a most important language in the world?
От: Mamut Швеция http://dmitriid.com
Дата: 07.03.07 15:13
Оценка: +1
CS>>Из веселой и примечательно интересной статьи Steve Yegge (former Amazon, now Google)..

Q>А что тут в последнее время его статьи все постят с таким подтекстом, что его мнение мегаценно? Кто он, собственно, такой? Может он gcc написал или YouTube создал, а может пару мощных языков программирования забабахал или хотя бы ценную книгу написал? Кроме как умением п.., т.е. языком молоть, он чем-нибудь известен?


7 лет работал в Амазоне (см., кстати, Tour de Babel). Сейчас работает, вроде, в Гугле (см. A Noogler's View of Google).

Этакий Joel on Software, но темы он поднимает, вроде, посерьезнее.


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.