Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   javascript изнутри (https://javascript.ru/forum/misc/33857-javascript-iznutri.html)

[ANTI]CheateR 11.12.2012 13:45

javascript изнутри
 
Добрый день.

А задавался ли кто вопросом, как устроены классы в js, например Object, Data. Знаю, что гугловый движок v8 opensource, копался ли кто в нем?

Интересно же :)

Skipp 11.12.2012 14:28

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

[ANTI]CheateR 11.12.2012 14:53

Зато есть эмуляция классов.

Пишем var obj = new Object(), тем самым создавая экземпляр "класса" Object. Или я не прав?

Меня интересуют исходники функций-конструкторов, таких как тот же Object, например.

vashurin 11.12.2012 15:10

Цитата:

Сообщение от [ANTI]CheateR (Сообщение 220779)
Зато есть эмуляция классов.

У яваскрипт не "эмуляция" классов, а есть прототипы: http://javascript.ru/tutorial/object собственно все яваскрипт эмуляторы синтаксиса классов других языков программирования строятся на прототипах.

Цитата:

Сообщение от [ANTI]CheateR (Сообщение 220779)
Пишем var obj = new Object(), тем самым создавая экземпляр "класса" Object. Или я не прав?

Меня интересуют исходники функций-конструкторов, таких как тот же Object, например.

Не ясно зачем исходники и сможете ли вообще в них разобраться? Может документацию по ECMAScript: http://dmitrysoshnikov.com/ecmascrip...mplementation/ ?

godofjavascript 11.12.2012 17:52

Ты же не думаешь что нативные функции напсианы на javascript??

[ANTI]CheateR 11.12.2012 18:15

Цитата:

Сообщение от godofjavascript (Сообщение 220812)
Ты же не думаешь что нативные функции напсианы на javascript??

ну вообще, на странице движка v8 написано "V8 is written in C++", видимо, и функции реализованы на нем :)

вопрос профессионалам: вам самим неинтересно, что там внутри и как это работает? или вам хватает чтения спецификаций?

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

melky 11.12.2012 18:29

Цитата:

Сообщение от [ANTI
CheateR] вам самим неинтересно, что там внутри и как это работает? или вам хватает чтения спецификаций?

что там можешь быть интересного?

я туда лазил для выяснения таких тонкостей, которые не описаны в спецификациях.

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

другое дело, чтобы узнать, какими алгоритмами они руководствуются (кстати, в чромиуме вебките в
css3 анимациях уже процессе анимирования используется линейный поиск значений (кейфреймов) для свойств (это медленно и там даже коммент есть, что этот поиск нужно заменить на бинарный, так то :))
)

Цитата:

Сообщение от [ANTI
CheateR] при создании темы подумал, что может кто-нибудь проводил небольшое исследование по этому вопросу и написал статью

???

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

чромиум
http://code.google.com/p/chromium/source/search

файрфокс
http://dxr.mozilla.org/

остальные какие-то дикарские - в этих хотя бы поиск нормальный есть, и даже можно нажать на тип/переменную/инклуд, чтобы переместиться к её определению\файлу.

godofjavascript 11.12.2012 18:30

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

п.с. профессионал. спецификацию не читал, доламерствовал до своего уровня мелкими шажками.

godofjavascript 11.12.2012 18:33

и вообще, разве понмиание того как реализован яваскрипт улучшит понимания яваскрипта или ВООБЩЕ ХОТЬ КАК-ТО СВЯЗАННО С САМИМ ЯВАСКРПТОМ??? я логики не пойму)) этот вопрос на сайте по С++ задавать надо было бы.

melky 11.12.2012 18:35

Цитата:

Сообщение от godofjavascript (Сообщение 220823)
и вообще, разве понмиание того как реализован яваскрипт улучшит понимания яваскрипта или ВООБЩЕ ХОТЬ КАК-ТО СВЯЗАННО С САМИМ ЯВАСКРПТОМ??? я логики не пойму)) этот вопрос на сайте по С++ задавать надо было бы.

да, улучшит. глупый вопрос

[ANTI]CheateR 11.12.2012 18:40

по-моему, улучшит

спасибо всем высказавшимся, тему можно закрывать

nerv_ 11.12.2012 19:07

Цитата:

Сообщение от [ANTI
CheateR]вопрос профессионалам: вам самим неинтересно, что там внутри и как это работает?

отвечу как непрофессионал: ассемблер изучал, не? Давайте до C разберем, потом до асма и еще ниже. Вопрос в том нафига?

Цитата:

Сообщение от melky
и вообще, разве понмиание того как реализован яваскрипт улучшит понимания яваскрипта

Цитата:

Сообщение от melky
да, улучшит. глупый вопрос

сегодня одна реализация, завтра другая. Мы об этом даже не узнаем, просто потому, что уже привыкли дергать за знакомые ручки.
Пример: когда то рекомендовали делать так
for( var i = 0, len = arr.length; i < len; i++ ) {

сейчас уже не актуально.
Еще мысль: любые оптимизации на уровне языка не сравняться с оптимизациями на уровне реализации/интерпретации этого языка. Более того, оптимизации на уровне языка могут загубить оптимизации на уровне реализации/интерпретации этого языка.

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

p.s.: Возможно, в терминологии я немного не так выразился, но мысль, думаю, ясна.

GuardCat 11.12.2012 19:50

[ANTI]CheateR, [offtopic]Жуть как режет взгляд ваш ник — привычки говорят должно быть так: ANTI["CheateR"] :-)[/offtopic]

godofjavascript 12.12.2012 06:58

Цитата:

Сообщение от melky
да, улучшит. глупый вопрос

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

Цитата:

Сообщение от nerv_
Давайте до C разберем, потом до асма и еще ниже. Вопрос в том нафига?

вот вот, то что ниже спецификации оно жвообще не связанно с яваскриптом. ну ни как, это разные уровни абстракции. а оптимизацию на уровне реализации берет на себя конкретный движок, а оптимизацию на уровне языка берет на себя конкретный яваскриптер.


короче замечаю что мелкий нубло уже раз в 10 за последний месяц, то про линукс тупанет, то про еще что-то.. я разочарован...

nerv_ 12.12.2012 13:36

Цитата:

Сообщение от godofjavascript
короче замечаю что мелкий нубло уже раз в 10 за последний месяц, то про линукс тупанет, то про еще что-то.. я разочарован...

ты можешь быть не согласен, но грубить не имеешь права ;)

Dim@ 12.12.2012 15:22

godofjavascript,
ладно максимус я тебя узнал, во всяком случае из логики следует, что ты максимус
Цитата:

Сообщение от godofjavascript
вот вот, то что ниже спецификации оно жвообще не связанно с яваскриптом

афтор пищи исщо:lol:

godofjavascript 12.12.2012 18:15

Цитата:

Сообщение от nerv_
но грубить не имеешь права

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

melky 12.12.2012 19:19

Цитата:

Сообщение от godofjavascript
каким же образом? написал я реализацию яваскрипта на питоне, ты знаешь и питон и яваскрипт, каким образом то как я реализовал стандарт улучшит твое понмиание яваскрипта? жги

при чём тут твоя реализация на питоне ?! я имел в виду то, что это понимание может помочь в том, чтобы писать код с упором на производительность - смену алгоритмов в учет не берем.
то, что один и тот же код с разной скоростью работает в FF и CH тому пример - далеко на jsperf ходить не надо.
поэтому нужно знать, как будет выглядеть твой код "с той стороны". вспомни кеширование длины массива при его обходе.
Цитата:

Сообщение от godofjavascript
и вообще, разве понмиание того как реализован яваскрипт улучшит понимания яваскрипта или ВООБЩЕ ХОТЬ КАК-ТО СВЯЗАННО С САМИМ ЯВАСКРПТОМ??? я логики не пойму)) этот вопрос на сайте по С++ задавать надо было бы.

special для тебя поясню: я отвечал на выделенный вопрос.
Цитата:

Сообщение от godofjavascript
короче замечаю что мелкий нубло уже раз в 10 за последний месяц, то про линукс тупанет, то про еще что-то.. я разочарован...

ха, лол. что страшного в тупняках? я же человек всё-таки)
Цитата:

Сообщение от godofjavascript
Ну вообще-то имею, и готов понести последствия, и если кто-то попытается спросить с меня за мои слова я их обосную с радостью.

ок. встрясём :
Цитата:

Сообщение от godofjavascript
замечаю что мелкий нубло раз в 10 за последний месяц

пруфы или гей.
и я не понимаю, с чего ты взял, что я нуб. поржал. так что поясняй "с радостью".
ты знаешь, кто такой новичок, вообще?

неудивительно, что тебя с такой критикой постоянно банят.

godofjavascript 12.12.2012 20:21

Цитата:

Сообщение от melky
что это понимание может помочь в том, чтобы писать код с упором на производительность

ТЫ СОБРАЛСЯ ПИСАТЬ КОД ПОД ОДИН ДВИЖОК??

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

Цитата:

Сообщение от melky
ха, лол. что страшного в тупняках? я же человек всё-таки)

ну просто я всегда думал ты мегазадрот, и так оно и было, но и ты фейлишь О_О что обломно

Цитата:

Сообщение от melky
пруфы или гей.

Я соврал же, ты же не лоховался... Особенно свспоре про линукс и гимп. Особенно круто пруфы просить которые были в основном в моих тредах которые потер мудак 90 уровня.

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

melky 12.12.2012 20:32

Цитата:

Сообщение от godofjavascript
А вообще приведи-ка пример знания того как реализация яваскрипта влияет на упор на производительность.

Цитата:

Сообщение от melky
вспомни кеширование длины массива при его обходе.

посты что ли не до конца читаешь.

http://v8-io12.appspot.com/#1

cyber 12.12.2012 20:45

godofjavascript, если вы такой умный то что вам мешает выучить С++ и разобраться как все работает?

godofjavascript 12.12.2012 21:24

Цитата:

Сообщение от melky
вспомни кеширование длины массива при его обходе.

не актуально, можно РЕАЛЬНЫЙ ПРИМЕР (ау мы в 2012 году живем, и не в теориях, а в практиках)
Цитата:

Сообщение от cyber
если вы такой умный то что вам мешает выучить С++ и разобраться как все работает?

Вообще неадекватность постов в этом треде перешкливает просто.

cyber 12.12.2012 22:07

Цитата:

Сообщение от godofjavascript
Вообще неадекватность постов в этом треде перешкливает просто.

вы для начала писать то научитесь.

godofjavascript 12.12.2012 22:10

Цитата:

Сообщение от cyber
вы для начала писать то научитесь.

повторюсь, неадекватность зашкаливает, ШТООО этот человек несет аще.. с кем он разговариваетт.. о чем...

cyber 12.12.2012 22:40

godofjavascript, может хватит из себя умного строить?
если вы бы ли умнее остальных на этом форуме то не задавали бы тупых вопросов и научились бы пользоваться гуглом http://habrahabr.ru/post/72474/

godofjavascript 13.12.2012 07:24

короче все, я с тобой диалог не веду, ты неадекват, давай в черный.

godofjavascript 13.12.2012 16:46

melky,
не актуально, можно РЕАЛЬНЫЙ ПРИМЕР (ау мы в 2012 году живем, и не в теориях, а в практиках)

nerv_ 13.12.2012 16:56

godofjavascript, харош бузить уже, ага? Будь добрее :)

godofjavascript 13.12.2012 17:54

оки оки) у меня просто разз со мной не согласны значит на меня нападают, - ядолжен защищаться)

ну так я реал не понмиаю зачем учить то как кто то реализовывает движки яваскрипта)? обьясните мне)?

как этот вопрос вообще яваскриптом связан? это же разные уровни абстракции)) совершенно.

Если бы движок яваскрипта писался на яваскрипте вот тогда бы этот вопрос имел вообще отношение про яваскрипт)) а так этот вопрос надо на форуме по С++ задавать, типа я вот пишу игру, а я вот яваскрипт машину, как лучше сделать пасоны?

melky 13.12.2012 18:25

Цитата:

Сообщение от godofjavascript
ну так я реал не понмиаю зачем учить то как кто то реализовывает движки яваскрипта)? обьясните мне)?

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

разве когда ты на Жуквери пишешь, ты не представляешь, что там происходит, внутри неё?

godofjavascript 13.12.2012 18:53

Цитата:

Сообщение от melky
было бы неплохо.

но почему?

разве когда ты на Жуквери пишешь, ты не представляешь, что там происходит, внутри неё?
--------
вот в жуквери представляю а тут не представляю, давай говорить не метафорами и сравнениями а конкретными вещами, приведи пример то.


для оптимизации, приведи пример для оптимизации?

- раньше длинна массива не кэшировалась.

- ок ок, вот значит раньше и надо было знать как работает машина, а щас не обязательно. Или приведи пример зачем учить как устроен движек ЩАС? ну правда, в упор не вижу.


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

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

melky 13.12.2012 19:35

Цитата:

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

мне лень искать, ибо у меня куча дел, но пару примеров я кину :)

http://javascript.ru/forum/events/16...remennojj.html <-- загадка от меня.
V8 constructors <-- установленный прототип со значениями по-умолчанию быстрее, чем отсутствие прототипа. Обьяснение этому находится в презентации\статье с хабра, которую я недавно кидал.

godofjavascript 13.12.2012 19:39

Это муравьиная оптимизация или нет? Я просто не знаю. (п.с. спс)

melky 13.12.2012 19:52

Цитата:

Сообщение от godofjavascript (Сообщение 221156)
Это муравьиная оптимизация или нет? Я просто не знаю. (п.с. спс)

посмотри на пример прототипов. разница около 100%!!!

в моем примере разница 8% ... и это только из-за одной локальной переменной!

(больше не тестил. сейчас времени вообще нет)

godofjavascript 13.12.2012 21:24

Ясно спасибо, это во всех движках работает?


Часовой пояс GMT +3, время: 18:23.