Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование готовых алгоритмов vs написание своих, Какая-то критика C++ 
:(
    Опции темы
Любитель
Дата 5.2.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Ну.. что сказать - типичное мнение smile Очень распространённое. Но от этого оно не становится справедливым. Поверхностным можно назвать всё. Ты знаешь идеально асм, но не знаешь машинные коды. Или не знаешь логику работы процессора. Физический уровень - и т. д. Познанию нет предела, но это не повод считать всё "поверхностным". Надо выбирать разумные пределы.


--------------------
PM MAIL ICQ Skype   Вверх
vinter
Дата 5.2.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Carnifex @  5.2.2009,  15:04 Найти цитируемый пост)
В отсутствии кругозора. "уметь написать гуи в хекс-кодах" конечно лишнее, но не знать что такое асм - признак поверхностных знаний, лишний повод засомневаться в профессионализме программиста.

бред сивой кобылы, приведи мне хотя бы один аргумент зачем ,например, Java программисту знать ассемблер, да и любому другому? Зачем, если его работа с этим не связана?


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 5.2.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Вобщем-то неочевидно, что ширина кругозора както связана с эффективностью работы, и может показаться если два программиста пишут на С++, одни знает а асм, а другой его не знает, то код они напишут одинаковый.
Однако тут важно не знание асма как такового, а умение на стадии проектирования кода представить как этот код скомпилиться и как он будет выполняться. Тогда можно сказать что один вариант по тем или иным параметрам будет оптимальнее другого. Для этого надо знать свой компилятор (его кодогенерацию, т.е. асм) и знать среду в которой программа будет выполняться (ОС).
Например зная размер страницы памяти (гранулярность памяти) в винде, организацию хипа, стека, и размещение секций образа программы в памяти можно более правильно выбрать как и где именно размещать буферы в памяти, чтобы программа не требовала 512Мб оперативки для работы с 1Мб текстовым файлом.
Я уже не говорю об оценке сложности алгоритмов, много ли программистов вообще имеют представление что это такое?
Зная как будет компилиться та или иная конструкция кода, можно будет прикинуть ее размер и быстродействие, может сейчас такие параметры и не важны, но от того что код оптимален, хуже никому не будет.

vinter, Java программисту надо знать байткод, принцимы работы ВМ java и т.п. 
вродебы в java используются стековые ВМ, и наверное это может както влиять на оптимальность того или иного кода, это тоже надо знать
много ли java программистов знают как выполняется их код?
PM MAIL ICQ   Вверх
vinter
Дата 5.2.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



GoldFinch, вот чесслово чувствуется, что ты никак от низкого уровня не отйдешь smile)
Для любых гарантий используется стандарт, нельзя ничего предполагать по поводу компилятора, потому что писать компиляторо-зависимый код это очен-очень плохо, потому, что в даже более поздней версии компилятор может быть существенно перереаботан, и все твои низкоуровневые зависимости могут дать UB.

Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
Я уже не говорю об оценке сложности алгоритмов, много ли программистов вообще имеют представление что это такое?

сложность stl гарантирована стандартом, самописных - головой.
Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
Зная как будет компилиться та или иная конструкция кода, можно будет прикинуть ее размер и быстродействие

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

Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
vinter, Java программисту надо знать байткод, принцимы работы ВМ java и т.п. 

зачем?

Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
много ли java программистов знают как выполняется их код?

важно знать, что он делает на том уровне, на котором его пишут, низкий уровень не важен. 
Вот тебе пример, тебе допустим надо создать клиент\серверное приложение на базе TCP, ты же не пойдешь смотреть формат IP пакета, и уж тем более фрейма физического уровня. У каждого уровня абстракции есть стандарт и гарантии по выполнению, использовать более низкий уровень из высокого можно только на свой страх и риск.


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 15:51 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



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

Цитата(Любитель @  5.2.2009,  14:41 Найти цитируемый пост)
Познанию нет предела, но это не повод считать всё "поверхностным". Надо выбирать разумные пределы. 

"лишний повод"
Но всё-равно программист, не видевший асма, это всё-таки подозрительно

Это сообщение отредактировал(а) Carnifex - 5.2.2009, 15:54
PM MAIL   Вверх
vinter
Дата 5.2.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Carnifex @  5.2.2009,  16:51 Найти цитируемый пост)
vinter, ты никогда не слышал про асм? Никогда не видел процессорных инструкций?

какое это имеет значение? Видел, но видел на университетском уровне, т.е никогда ничего на нем серьезного не писал.
Цитата(Carnifex @  5.2.2009,  16:51 Найти цитируемый пост)
Что так задело?

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


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(vinter @  5.2.2009,  16:07 Найти цитируемый пост)
какое это имеет значение?

Мне просто странным кажется программист, которого никогда не интересовало во что превращает компилятор написанный им код, как это работает и как это устроено. А сферический программист на Java может конечно даже и не знать, компилируется ли его программа в нативный код или в байт-код, но мне это кажется удивительным. всё.
PM MAIL   Вверх
vinter
Дата 5.2.2009, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Carnifex @  5.2.2009,  17:17 Найти цитируемый пост)
Мне просто странным кажется программист, которого никогда не интересовало во что превращает компилятор написанный им код, как это работает и как это устроено

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


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(vinter @  5.2.2009,  16:22 Найти цитируемый пост)
Ты изучил схемотехнику прежде чем сесть за программирование?

Зачем прежде? Программировать можно и без этого, обратного я нигде не говорил. До какого уровня спускаться, до схемотехники или до квантовой механики  - личное дело каждого, но ассемблер - всё-таки в этой иерархии почти наверху.

Цитата(vinter @  5.2.2009,  16:22 Найти цитируемый пост)
Ты знаешь в чем отличие npn перехода, от pnp?

каюсь, забыл
PM MAIL   Вверх
Любитель
Дата 5.2.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(vinter @  5.2.2009,  16:22 Найти цитируемый пост)
а ты разбирался до процессорных команд, или разбирал еще байт последовательности, импульсы? Ты изучил схемотехнику прежде чем сесть за программирование? Ты знаешь в чем отличие npn перехода, от pnp? Судя по твоей логике, это должен знать каждый пограммист.. 

Вот и я о том же...

Цитата(Carnifex @  5.2.2009,  15:51 Найти цитируемый пост)
Но всё-равно программист, не видевший асма, это всё-таки подозрительно

Вот блин. Опять унылый троль? smile 

PS Мой опыт асма это две вещи: тривиальные универский задачки + "анализ" других приложний на уровне среднесложных алгоритмов, классических пакеров и т. д. Ну и плюс тривиальный анализ кода, генеримого компилером для некоторых случаев. В основном just for fun.


--------------------
PM MAIL ICQ Skype   Вверх
vinter
Дата 5.2.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Carnifex, я не понимаю смысла опускаться ниже языка, на ктором ты пишешь. Объясни свою позицию, только аргументировано, желательно с примерами из реальных проектов в твоей жизни. 


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(Любитель @  5.2.2009,  16:33 Найти цитируемый пост)
PS Мой опыт асма это две вещи: тривиальные универский задачки + "анализ" других приложний на уровне среднесложных алгоритмов, классических пакеров и т. д. Ну и плюс тривиальный анализ кода, генеримого компилером для некоторых случаев. В основном just for fun. 

И тем не менее он есть. И так у большинства. О чём я и говорю.

Цитата(vinter)
я не понимаю смысла опускаться ниже языка, на ктором ты пишешь. Объясни свою позицию, только аргументировано, желательно с примерами из реальных проектов в твоей жизни.

Пользы от этого мало, просто знание, бессмысленное, да

Это сообщение отредактировал(а) Carnifex - 5.2.2009, 16:53
PM MAIL   Вверх
GoldFinch
Дата 5.2.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



vinter, с точки зрения языка есть разница в 
Код

n=func_that_ret_const_1(...);
m=func_that_ret_const_2(...);
for(i=0;i<n;i++)
{
x=x*m;
}

и
Код

for(i=0;i<func_that_ret_const_1(...);i++)
{
x=x*func_that_ret_const_2(...);
}

?

а между
Код

switch(key)
{
case '1': x=1;break;
case '2': x=2;break;
...
case 'n': x=N;break;
}

и например
Код

... v['1'..'n']={1,2,3,  ,N};
x=v[key];

?
PM MAIL ICQ   Вверх
Carnifex
Дата 5.2.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(GoldFinch @  5.2.2009,  17:12 Найти цитируемый пост)
switch(key)
{
case '1': x=1;break;
case '2': x=2;break;
...
case 'n': x=N;break;
}

Кстати свитчи при достижении некоторого n компилятором превращаются в jump-tables или как там они называются, и эффективность будет почти такая же, как 
Цитата(GoldFinch @  5.2.2009,  17:12 Найти цитируемый пост)
v['1'..'n']={1,2,3,  ,N};
x=v[key];

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

Это сообщение отредактировал(а) Carnifex - 5.2.2009, 17:23
PM MAIL   Вверх
Любитель
Дата 5.2.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



GoldFinch, если функция у тебя действительно возвращает константу - то поверь любой нормальный компилер с этим справится (с подстановкой значения). Что касается второго примера - аналогично. Создаст он таблицу переходов, если сочтёт нужным. Только свитч - это много буков, потому я так писать не буду. И вообще - твой пример перерождается в key - '0' (раз уж это си).


--------------------
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1351 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.