Рядовой программист и принцип работы ПК
Приветствую Вас товарищи.
Как вы думаете? Должен ли программист JS знать принцип работы ПК? То-бишь, как данные попадают в память, как обрабатываются процессором и тд. или по вашему мнению это непринципиально? Или любой профи должен четко понимать это? |
zhurchik,
желательно, но не обязательно. |
Цитата:
Цитата:
|
Имхо должен, мы сейчас в учим пк вообще на уровне транзисторов, приходится в физике разбиратся)
|
Gozar,
cyber, чот вы загнули) Как незнание того, "как данные попадают в память, как обрабатываются процессором и тд." мне помешает создавать программы на JS? |
Safort,
Говнокодеры никому ничего не должны. Читаешь только то, что хочешь? Цитата:
Цитата:
Сейчас технологии переплетаются и приходиться знать, что при сохранении на жесткий диск операции бывают синхронными и асинхронными и что и когда повесит loop ;) |
Цитата:
Я изучаю низкоуровневые аспекты работы VM или компьютера, только из любопытства. Цитата:
|
Gozar,
Цитата:
Цитата:
Цитата:
|
kobezzza,
Цитата:
|
Цитата:
|
Цитата:
|
Любой, даже самый низкоуровневый юрист оберет всех участников этой темы до нитки.
Цитата:
|
Gozar,
По моему, ты путаешь программирование как таковое, со знанием реализации вычислений на конкретной ЭВМ. Это разные вещи. Программировать можно на чем угодно. Умение программировать -- это умение строить абстракции. Изобретатель экскаватора не обязан знать химический состав грунта. |
Цитата:
|
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,
Глухим по два раза обедню не служат. Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Gozar,
Глухим по два раза обедню не служат. Цитата:
|
Цитата:
|
Цитата:
//заканчиваю оффтоп. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Ну у меня прямо спина внизу заболела после прочтения треда
Цитата:
на уровне принципов - да (напр. - чем код статичнее, тем он быстрее). на уровне фактов - нет (напр. - в эту вот функцию низя передавать null. (можно. надеюсь, никто эти штуки всерьёз не воспринимает]. Хотя я заморачивался как-то: http://javascript.ru/forum/misc/3944...-funkcijj.html... не повторяйте моих ошибок). Цитата:
если речь идёт о приложухах - тогда, конечно, смысла нет, ибо все тормоза - в логике и IO если интересно про статический JS - google for SoundScript, StrongScript (как-то так) Цитата:
Цитата:
Цитата:
ну, мы живём в РФ, а тут ценится и считается за "надо" многорукость, так что, получается, Изобретатель экскаватора обязан знать химический состав грунта :nono: Цитата:
|
Цитата:
|
melky,
Цитата:
Цитата:
|
Цитата:
требую добавления смайлика на форум !!! ![]() http://www.elite-games.ru/conference...smiles/foo.gif |
MallSerg,
Ага, еще забавно, что весь код формируется в рантайме, а это и есть, внезапно, динамика. Никаких статических значений там нет, естественно, функция каждый раз формирует новый объект, по результату вызовов соответствующих ф-ций. Все что там есть -- это избавление от цикла. Еще более забавно то, что при нулевом понимании вопроса, вы вклиниваетесь в разговор взрослых мужиков. |
В примере используется рефлексия для разворачивания цикла
Оптимизация достигается заменой динамически вычисляемых значений на статические ( заранее рассчитанные ) значения. Доведем ситуацию до абсурда =)
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 позволило бы еще более ускорить рантайм. |
Цитата:
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,
С тобой трудно вести диалог. У тебя свои собственные представления о вычислениях, собственная, персональная терминология, при этом, код ты вообще не понимаешь, поэтому, пообщайся с кем нибудь другим, я все что хотел сказать, уже сказал. |
Цитата:
Цитата:
|
Цитата:
Если ты совсем не разбираешься в 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(); Функции стала значительно эффективнее за счет статичных значений т.е. из нее просто убирается итерация массива и косвенная адресация. минихоливарчик начался после твоей попытки опровергнуть утверждение что -"чем код статичнее, тем он быстрее" и при этом привел пример где оптимизация достигается за счет подставленний статичных значений вместо косвенной адресации. |
Цитата:
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 09:47. |