Snable » 09 окт 2009, 21:21
Есть такой чел... Макконелл... Он в своей книжке "Совершенный код" написал, что за всю жизнь ему пришлось жестко оптимизировать всего 1 прогу. Он писал быстрый декодер для DES по-моему, но не суть. Суть вот в чем... (Цифры не точные, поскольку читал давно)
Он писал на Java сначала.... Прога работала около 30 минут.
Он нашел узкие места, оптимизирал их на Java и она стала работать 10 минут.
Развернул циклы и она стала работать 5 минут. Но его это не устраивало.
Он переписал на Си. Прога работала 4 минуты.
Опять поискал узкие места и оптимизировал, полностью развернул пару циклов и прога стала работать 1 минуту. Его это тоже не устраивало.
Он переписал пару строк(из многих тысяч) в узких местах на асме и прога стала работать 15 секунд. Ему надо было уложиться в 30 секунд. Но прогу стало невозможно читать!
Так вот, о чем я.
Если надо, чтобы прога работала быстро, то надо определиться, насколько быстро она должна работать и оптимизировать до того уровня, который нужен.
А на асме тут народ, наверное, пишет, потому что там "оптимизация по умолчанию". Я считаю, что умнее компилятора большой кусок кода никто не напишет из здесь присутствующих, а вот времени на это затратит до фига.
В соответствии с принципом Парето - 80% времени программа выполняет 20% строк. Реально же зависимоть несколько иная - 90% времени программа выполняет <1% кода.
Лучшее решение в сложных проектах - писать на Си 99% кода и 1% на асме, чем писать все на асме, чтобы никто не понял (и не помог, если потребуется)
Каким боком сюда вписывается Бэйсик? Это как Джава в примере выше. Программы на нем более понятны, поскольку они более формализованы.
Это не асемблер, где можно "битик туда-сюда-в_то_место-забыли-а_теперь_вот_тут а параллельно еще 30 таких же цепочек"...
И не Си, где можно написать одно и то же 50 способами...
Это четкий язык без синтаксического сахара и без четкого контроля за всем, что происходит внутри устройства, на котором исполняется код.
Именно поэтому он лучше для начинающих.