Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Рядовой программист и принцип работы ПК (https://javascript.ru/forum/offtopic/54704-ryadovojj-programmist-i-princip-raboty-pk.html)

zhurchik 28.03.2015 20:48

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

Safort 28.03.2015 23:21

zhurchik,
желательно, но не обязательно.

Gozar 29.03.2015 00:09

Цитата:

Сообщение от zhurchik
Должен ли программист JS знать принцип работы ПК?

Не должен, а обязан!
Цитата:

Программи́ст — специалист, занимающийся написанием и корректировкой программ для компьютеров

cyber 29.03.2015 00:41

Имхо должен, мы сейчас в учим пк вообще на уровне транзисторов, приходится в физике разбиратся)

Safort 29.03.2015 01:22

Gozar,
cyber,
чот вы загнули) Как незнание того, "как данные попадают в память, как обрабатываются процессором и тд." мне помешает создавать программы на JS?

Gozar 29.03.2015 10:37

Safort,
Говнокодеры никому ничего не должны.
Читаешь только то, что хочешь?
Цитата:

Сообщение от zhurchik
и тд.

Цитата:

Сообщение от zhurchik
профи

Профи должен хотя бы смутно понимать как работает таже V8. Да, да, буквы js недаром стоят в nodejs.

Сейчас технологии переплетаются и приходиться знать, что при сохранении на жесткий диск операции бывают синхронными и асинхронными и что и когда повесит loop ;)

kobezzza 29.03.2015 21:36

Цитата:

Профи должен хотя бы смутно понимать как работает таже V8.
Не согласен, во первых VM JS много и работают они все по разному, во вторых от версии к версии принципы работы VM могут меняться, а в третьих эти тайные знания не дают никакого практического смысла.

Я изучаю низкоуровневые аспекты работы VM или компьютера, только из любопытства.

Цитата:

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

Safort 29.03.2015 21:50

Gozar,
Цитата:

Читаешь только то, что хочешь?
Огась)

Цитата:

Профи должен хотя бы смутно понимать как работает таже V8. Да, да, буквы js недаром стоят в nodejs.
Ты попутал JS-программиста с прикладником. JS это JS, а V8 это С/С++. Ощущаешь?

Цитата:

Сейчас технологии переплетаются и приходиться знать, что при сохранении на жесткий диск операции бывают синхронными и асинхронными и что и когда повесит loop
Казалось бы, причём тут то, как данные попадают в память и обрабатываются процессором?) Чтобы быть профи в JS, мне нужно быть им именно в JS, а не С/С++/асме и прочих низкоуровневых штуках.

Safort 29.03.2015 21:51

kobezzza,
Цитата:

Не согласен
2:2 :)

newuser1001 29.03.2015 22:04

Цитата:

Сообщение от cyber
Имхо должен, мы сейчас в учим пк вообще на уровне транзисторов, приходится в физике разбиратся)

Жалко, что вас там не научили, что такое абстракция.

newuser1001 29.03.2015 22:07

Цитата:

Сообщение от Gozar
Сейчас технологии переплетаются и приходиться знать, что при сохранении на жесткий диск операции бывают синхронными и асинхронными и что и когда повесит loop

И какое это имеет отношение к тому асинхронному API с которым ты работаешь в JS? Ты что, собрался компилятор переписывать?

Gozar 29.03.2015 22:42

Любой, даже самый низкоуровневый юрист оберет всех участников этой темы до нитки.
Цитата:

Сообщение от zhurchik
и тд

Предполагает что угодно, например работу с файловой системой. Упс, а ведь js через API умеет работать с ФС. Так что дружно перестаньте спорить. Очевидно что программист обязан знать устройство компьютера, а если не будет знать, то другие люди, даже не программисты будут его чморить, при любом удобном случае, т.к. они не компьютерщики и им наплевать.

newuser1001 29.03.2015 22:48

Gozar,
По моему, ты путаешь программирование как таковое, со знанием реализации вычислений на конкретной ЭВМ. Это разные вещи. Программировать можно на чем угодно. Умение программировать -- это умение строить абстракции. Изобретатель экскаватора не обязан знать химический состав грунта.

Gozar 29.03.2015 22:53

Цитата:

Сообщение от newuser1001
По моему, ты путаешь программирование как таковое, со знанием реализации вычислений на конкретной ЭВМ. Это разные вещи. Программировать можно на чем угодно. Умение программировать -- это умение строить абстракции. Изобретатель экскаватора не обязан знать химический состав грунта.

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

Safort 29.03.2015 23:19

Gozar,
Цитата:

Любой, даже самый низкоуровневый юрист оберет всех участников этой темы до нитки.
Уточню. И тебя тоже, так?)

Цитата:

Предполагает что угодно, например работу с файловой системой.
Тогда никто не профи. Сам же себе противоречишь)

Цитата:

Очевидно что программист обязан знать устройство компьютера
Что, прям любого? Вот, что поиск выдал по запросу "устройство компьютера"
http://catalog.gaw.ru/project/images...ts/sama5d3.jpg
http://www.ixbt.com/cpu/images/p6-nexgen/ris5.jpg
Ты всё понимаешь, что изображено на картинках? Я - нет, но это не мешает мне писать код типа:
let someVar = someObj.someMeth();
...

Safort 29.03.2015 23:24

Цитата:

Сообщение от Gozar (Сообщение 363821)
Немо, привет. А я то думал, когда ты начнешь мне пудрить мозги бессмысленными абстракциями.

Вот это ты зря. Однажды на форум пришёл чувак, часть ника которого содержало "Nemo" и вы его приняли за легендарного Немо. Но это был не тот Немо. И форумчане малясь зачмырили нюфага. Такие дела :(

Gozar 29.03.2015 23:39

Safort,
Глухим по два раза обедню не служат.
Цитата:

Сообщение от Gozar
Сообщение от zhurchik
и тд
Предполагает что угодно, например работу с файловой системой. Упс, а ведь js через API умеет работать с ФС. Так что дружно перестаньте спорить


Gozar 29.03.2015 23:40

Цитата:

Сообщение от Safort
Вот это ты зря

Прикинь, мне плевать.

Gozar 29.03.2015 23:44

Цитата:

Сообщение от Safort
форумчане малясь зачмырили нюфага

Цитата:

Сообщение от newuser1001
Твое кукареку имеет такое же отношение к сабжу, как сортир в деревне Простоквашино.

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

Действительно, этот молодой отрок достоин уважения не смотря ни на что, да?! ;)

newuser1001 30.03.2015 00:02

Цитата:

Сообщение от Gozar
молодой отрок

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

newuser1001 30.03.2015 00:07

Gozar,
Глухим по два раза обедню не служат.
Цитата:

Сообщение от Gozar
через API

Пиши уже тогда на асме, блеать, будь последовательным.

Safort 30.03.2015 00:20

Цитата:

Сообщение от Gozar (Сообщение 363828)
Прикинь, мне плевать.

:(

Safort 30.03.2015 00:23

Цитата:

Сообщение от Gozar (Сообщение 363829)
Действительно, этот молодой отрок достоин уважения не смотря ни на что, да?! ;)

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

Gozar 30.03.2015 00:26

Цитата:

Сообщение от Safort
Но если тебе он так не нравится, то ты можешь просто игнорить его.

Как и ты можешь игнорировать мои сообщения, но ты этого не делаешь.

Цитата:

Сообщение от newuser1001
Пиши уже тогда на асме, блеать, будь последовательным.

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

newuser1001 30.03.2015 00:31

Цитата:

Сообщение от Gozar
Давно тебя из дурки выпустили

Ты прям весь такой остроумный из себя, реальный конкурент петросяну.

Gozar 30.03.2015 00:34

Цитата:

Сообщение от newuser1001
Ты прям весь такой остроумный из себя, реальный конкурент петросяну.

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

melky 30.03.2015 12:52

Ну у меня прямо спина внизу заболела после прочтения треда

Цитата:

Сообщение от Gozar
Профи должен хотя бы смутно понимать как работает таже V8. Да, да, буквы js недаром стоят в nodejs.

слишком мутный ответ, мсье.

на уровне принципов - да (напр. - чем код статичнее, тем он быстрее).
на уровне фактов - нет (напр. - в эту вот функцию низя передавать null. (можно. надеюсь, никто эти штуки всерьёз не воспринимает]. Хотя я заморачивался как-то: http://javascript.ru/forum/misc/3944...-funkcijj.html... не повторяйте моих ошибок).

Цитата:

Сообщение от kobezzza
Не согласен, во первых VM JS много и работают они все по разному, во вторых от версии к версии принципы работы VM могут меняться, а в третьих эти тайные знания не дают никакого практического смысла.

:( ещё как дают. не взводите всё в абсолют. есть задачи, где нужно\можно подстраиваться под принципы V8 - напр. $C и SS

если речь идёт о приложухах - тогда, конечно, смысла нет, ибо все тормоза - в логике и IO

если интересно про статический JS - google for SoundScript, StrongScript (как-то так)
Цитата:

Сообщение от Gozar
Сейчас технологии переплетаются и приходиться знать, что при сохранении на жесткий диск операции бывают синхронными и асинхронными и что и когда повесит loop

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

Цитата:

Сообщение от Gozar
низкоуровневый юрист

хаха, что это за зверь?

Цитата:

Сообщение от newuser1001
Изобретатель экскаватора не обязан знать химический состав грунта.

я тоже раньше злился на своё тупое окружение, которое считает "ты ж программист"

ну, мы живём в РФ, а тут ценится и считается за "надо" многорукость, так что, получается, Изобретатель экскаватора обязан знать химический состав грунта :nono:

Цитата:

Сообщение от Safort
Что, прям любого? Вот, что поиск выдал по запросу "устройство компьютера"

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

newuser1001 30.03.2015 14:27

Цитата:

Сообщение от melky
напр. - чем код статичнее, тем он быстрее

не всегда

Safort 30.03.2015 23:06

melky,
Цитата:

если интересно про статический JS - google for SoundScript, StrongScript (как-то так)
Надеюсь Мозилла подхватит эту инициативу.

Цитата:

ну на принципиальном уровне ты же представляешь, как он работает? то, что там не шайтан сидит и посылает числа на экран, а проводится конвейерное исполнение команд? наверное, оно и имелось в виду...
Ну какбэ да, но Гозар же настаивает на "и т.д.", которое может значить вообще всё, что угодно(по его словам).

MallSerg 31.03.2015 04:13

Цитата:

Сообщение от newuser1001
Сообщение от melky
напр. - чем код статичнее, тем он быстрее
не всегда

Забавно как раз ссылка на пример где динамические расчеты при каждом вызове функции заменяются на статические значения которые не нужно вычислить при каждом вызове =).

требую добавления смайлика на форум !!!

http://www.elite-games.ru/conference...smiles/foo.gif

theKingOfJava 31.03.2015 12:30

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

MallSerg 31.03.2015 14:23

В примере используется рефлексия для разворачивания цикла
Оптимизация достигается заменой динамически вычисляемых значений на статические ( заранее рассчитанные ) значения.

Доведем ситуацию до абсурда =)
var arr = ["a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a"];

var sliceArr001 = function (){
	var returnStr = "";
		for (i = 0; i < 20 ; i++{
			returnStr += arr[i];
		}
	return returnStr;	
}

var sliceArr002 = function (){
	return "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
этот пример похож на пример приведенный в примере xD
Надеюсь не стоит объяснять почему второй вариант функции будет работать быстрее?
С помощью рефлексии можно создавать второй вариант функции каждый раз когда изменяется массив.
Суть в том что используя немного динамики мы создаем более статичный(более быстрый вариант) функции.
И нужно четко понимать динамика замедляет программу статика ускоряет. но динамика позволяет делать программу более статичной и быстрой ))))).
Кстати использование конструктора функции вместо eval позволило бы еще более ускорить рантайм.

theKingOfJava 31.03.2015 17:22

Цитата:

Сообщение от MallSerg
Надеюсь не стоит объяснять почему второй вариант функции будет работать быстрее?

Нет объяснять не нужно, но никакого отношения к сабжу он не имет. Вы возвращаете готовую строку, а там каждый раз вычисляется новый объект (но без цикла). Вот более-менее адекватый пример:
random=function(){return Math.round(Math.random())}

makeArr1=function(){var i=3, acc=[]; while(i--) acc.push(random()); return acc}
makeArr2=function(){return [random(), random(), random()]}

console.log(makeArr1(), makeArr2(), makeArr1(), makeArr2())

//>>>> [ 1, 0, 1 ] [ 1, 1, 0 ] [ 0, 0, 1 ] [ 1, 1, 1 ]


Цитата:

Сообщение от MallSerg
используя немного динамики мы создаем более статичный

Это бред. В рантайме нет никакой статики, это у вас, свои, особые определения.

MallSerg 31.03.2015 18:29

Цитата:

Сообщение от theKingOfJava
там каждый раз вычисляется новый объект

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

theKingOfJava 31.03.2015 18:40

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

theKingOfJava 31.03.2015 18:49

Цитата:

Сообщение от MallSerg
там каждый раз вычисляется новый объект

Цитата:

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

При вызове check создается.

MallSerg 31.03.2015 20:57

Цитата:

Сообщение от theKingOfJava
При вызове check создается.

При вызове чего?
Если ты совсем не разбираешься в JS то могу подсказать =)
var SelfModifyObserver = function(){
    var stack = [];
    this.add = function(server){
        stack.push(server);
        var code = 'return {';
        for(var i = 0, ln = stack.length; i < ln; i++){
            code += stack[i].name + ':' + 'stack[' + i + '].ping(),';
        }
        code += '};';
        this.check = eval('(function(){' + code +'});');
        return this;
    };
    this.check = function(){return {};}
};
при вызове метода .add создается новая функция в которой вместо косвенного обращения подставляется реальное значение т.е. вместо stack[i].name в тело функции вставляется значение которое хранится по этому адресу/пути
после этого в цикле просто вызывается функция instance.check();
Функции стала значительно эффективнее за счет статичных значений т.е. из нее просто убирается итерация массива и косвенная адресация.

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

theKingOfJava 31.03.2015 21:24

Цитата:

Сообщение от MallSerg
При вызове чего?

при вызове функции check, что не ясно?

theKingOfJava 31.03.2015 21:31

Цитата:

Сообщение от MallSerg
за счет подставленний статичных значений вместо косвенной адресации.

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

MallSerg 31.03.2015 21:46

Цитата:

Сообщение от theKingOfJava
при вызове функции check, что не ясно?

Ты действительно думаешь что при вызове функции check происходит кодогенерация?


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