Автор Тема: Трюки, приемы программирования  (Прочитано 23210 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Shymep

  • Администратор
  • Действительный статский советник
  • *****
  • Сообщений: 1909
  • Репутация: 58
  • Пол: Мужской
Трюки, приемы программирования
« : јРав 29, 2007, 05:24:14 pm »
Итак здесь обсуждаем свои идеи по поводу, что лучше, оптимальней итд...

1 вопрос: когда лучше дублировать часть стандартных функций, а когда лучше пользоваться уже готовыми библиотеками (http://forum.ishodniki.ru/index.php/topic,10648.msg43558/boardseen.html)

Мое мненние на этот счет:
1) Если нужно написать простое условие на проверку типа "а символ-число?", лучше самому набросать условие c>='0' && c<='9'
2) Если таких функций несколько, лучше имхо их продублировать у себя в программе, чем подключать модуль.

2 вопрос: всегда задавал себе и не находил ответа... Зачем в С++ для строк использовать функцию нахождения длины strlen в том случае, если идет цикл по всем символам строки
Код: (cpp) [Выделить]
for(i=0;i<strlen(s);i++){//...}Неоптимально!

Код: (cpp) [Выделить]
n = strlen(s);
for(i=0;i<n;i++){//...}
Уже лучше, сократили число обращений к функции strlen, но зачем, когда можно так

Код: (cpp) [Выделить]
for(i=0;s[i]!='\0';i++){//...}
« Последнее редактирование: јРав 29, 2007, 05:43:01 pm от Shymep »
Smile and the world will smile back :wink:

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #1 : јРав 29, 2007, 06:02:33 pm »
Цитировать
Мое мненние на этот счет:
1) Если нужно написать простое условие на проверку типа "а символ-число?", лучше самому набросать условие c>='0' && c<='9'
2) Если таких функций несколько, лучше имхо их продублировать у себя в программе, чем подключать модуль.
безсмысленно, модуль со стандартными ф-ми работы с С подобными строками, достаточно мал и практически не ощутим в программе.
а вот модуль который действительно увеличит ехе, это iostream но я сомневаюсь, что кто то будет переписывать потоковые классы, у себя в программе:)
насчет strlen согласен, бесполезная ф-ия, но неизвестно на чем она писана..как и весь этот модуль, существует подозрение, что на асме, а если это так, то они будут работать быстрее чем  аналоги написанные собственноручно.

Оффлайн Shymep

  • Администратор
  • Действительный статский советник
  • *****
  • Сообщений: 1909
  • Репутация: 58
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #2 : јРав 29, 2007, 06:09:37 pm »
насчет strlen согласен, бесполезная ф-ия
Она небесполезная, если нужно просто вычислить длину строки. Хотя тогда опять-таки, если это единтсвенная функция из string.h, стоит ли ее подключать :)

В общем предлагаю задавать другие вопросы по практике программизма.
Smile and the world will smile back :wink:

Оффлайн melkiy

  • Глобальный модератор
  • Действительный статский советник
  • *****
  • Сообщений: 1124
  • Репутация: 24
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #3 : јРав 29, 2007, 09:07:23 pm »
Вот хотя бы в приведённом уже в этой теме коде: если всё равно, как инкрементировать переменную, не лучше ли ++i, чем i++ ?

Далее, может лучше просто
s[ i ], чем 
s[ i ] != '\0'

Ведь во втором случае сначала генерируется результат сравнения, который уже сравнивается с ИСТИНой, а в первом случае на этой операции экономим?
... Есть пауки, которые плетут ловчие сети, и есть пауки-бродяги. В любом случае они хЫщники.

agl

  • Гость
Re: Трюки, приемы программирования
« Ответ #4 : јРав 30, 2007, 12:00:28 am »
Цитировать
Вот хотя бы в приведённом уже в этой теме коде: если всё равно, как инкрементировать переменную, не лучше ли ++i, чем i++
Интересно, чем это лучше? Не думаю что есть разница в скорости, в данном случае все равно как, так я думаю.
Цитировать
Далее, может лучше просто
s[ i ], чем 
s[ i ] != '\0'
думаю твой вариант быстрее, т.к. сравнений вроде будет меньше, но подходит в основном для С, ну ещё для С++, и то насчёт нового компилера не уверенна. В С# с этим строго.
А как насчет такого изврата:
Код: (cpp) [Выделить]
for(i = 0; i < sizeof(ar)/sizeof(int); i++){ // code }помоему так)) я такими конструкциями не пользуюсь, т.к. смысла не вижу.
зачем вычеслять размер массива, когда мы его и так знать должны, неохота линки искать, но не один раз на форуме видела подобное.
Также считаю, если уж написали стандартные библиотеки, то зачем переписывать их без лишней нужды. ИМХО, когда пишем серьезный, ну или не очень серьезный, проект, библиотека по работе со строками не лишняя, поэтому стоит её(и не только) знать и уметь работать.  Для того и написано, чтобы нам не морочиться.

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #5 : јРав 30, 2007, 05:10:25 pm »
Цитировать
Вот хотя бы в приведённом уже в этой теме коде: если всё равно, как инкрементировать переменную, не лучше ли ++i, чем i++ ?
это безразлично, я больше привык к постфиксной записи, кто-то к префиксной, тут уже дело вкуса :)

Оффлайн melkiy

  • Глобальный модератор
  • Действительный статский советник
  • *****
  • Сообщений: 1124
  • Репутация: 24
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #6 : јРав 30, 2007, 06:29:37 pm »
Это небезразлично: оператор постинкремента сохраняет старое значение переменной, потому что он обязан вернуть это старое значение. Прединктремент никаких доп. переменных не создаёт.
Другое дело, что при минимальной (опять же - какой именно?) оптимизации компилятор везде, где возможно, заменит вариант на более эффективный. Но стоит ли доверять эту работу компилятору, особенно если мы сами понимаем разницу.
... Есть пауки, которые плетут ловчие сети, и есть пауки-бродяги. В любом случае они хЫщники.

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #7 : јРав 30, 2007, 07:09:34 pm »
Цитировать
Это небезразлично: оператор постинкремента сохраняет старое значение переменной, потому что он обязан вернуть это старое значение.
а ты уверен? я вот нет. зачем ему что-то сохранять, если он может вернуть, а потом увеличить, и тогда нет никакой разницы :) что сначала операция, потом возврат, что наоборот. Так что я придерживаюсь варианта как я себе это представляет, если у кого есть достоверная инфа по этому поводу, то просьба выложить сюда 8)

Оффлайн Shymep

  • Администратор
  • Действительный статский советник
  • *****
  • Сообщений: 1909
  • Репутация: 58
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #8 : јРав 30, 2007, 07:37:25 pm »
Где-то давно я уже участвовал в обсуждении этого вопроса  :)

http://www.progz.ru/forum/index.php?showtopic=22502&st=0
http://sql.ru/forum/actualthread.aspx?tid=308616&pg=2
Smile and the world will smile back :wink:

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #9 : јРав 30, 2007, 07:53:01 pm »
melkiy прав, признаю ошибку :)

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #10 : јРав 30, 2007, 09:35:29 pm »
какой код на ваш вгзляд эффективнее а какой красивее?
Код: (cpp) [Выделить]
class _func
{
private:
    static double _tol;
public:
    double operator()(double arg) {/*code_here*/}
    static void properties(double tolerance) { _tol = tolerance; }
} func;
Код: (cpp) [Выделить]
class func_properties
{
private:
    static double _tol;
public:
    static void properties(double tolerance) { _tol = tolerance; }
    friend double func(double);
};

double func(double arg) {/*code_here*/}

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #11 : јРав 30, 2007, 10:24:07 pm »
если по ходу кода мне нужно использовать временную переменную но дальше она мне не нужна
Код: (cpp) [Выделить]
...
{
    const int a = 1/*expression_here*/;
    //code_here
}
...
как вы на это смотрите?

Оффлайн Shymep

  • Администратор
  • Действительный статский советник
  • *****
  • Сообщений: 1909
  • Репутация: 58
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #12 : јРав 30, 2007, 11:48:08 pm »
По поводу 1го вопроса: наверное дружественная функция и переопределяемый оператор служат обычно для разных целей, поэтому некорректно говорить о "красоте" :)

По поводу 2го вопроса: если речь идет о константе, то, как вариант, можно определить ее макросом
Код: (cpp) [Выделить]
#define A 1
Smile and the world will smile back :wink:

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #13 : јРав 31, 2007, 10:18:01 am »
имелось ввиду что нужно написать функцию которую я буду часто использовать вдальнейшем и которая должна быть легко настраиваема
в обоих случаях можно будет вызывать функцию как func(че то там) но при использовании объекта класса настройка помоему более удобна и наглядна: func.property(аргумент)
во втором же случае ее можно будет настроить примерно так: func_properties.property(аргумент)

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

Оффлайн Leopotam

  • Темный свихнувшийся даритель банов, а так же
  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2119
  • Репутация: 16
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #14 : јРав 31, 2007, 12:00:55 pm »
Цитировать
ненужная далее переменная не засоряла стэк (уничтожалась при выходе из области видимости)
А с чего ты взял, что она будет хранится в стеке? Вообще-то все константы непосредственно инициализируются в коде, пример, так:
Код: (asm) [Выделить]
mov ax, 0x0001
Т.е. у тебя будет простое разбухание кода. Если ты сделаешь константу, то она сделает то же самое, но более оптимизировано и в момент компиляции.
Всех убью, один останусь...

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #15 : јРав 31, 2007, 02:31:05 pm »
еще раз попытаюсь сказать чего я хочу
Код: (cpp) [Выделить]
...
vector<double> v(n);//n определяетца во время выполнения
...
{
    const int a = v.size()/2 - 1;
    for (size_t i = 0; i<a; i++)
    {/*code_here*/}
}
...
a по определению не может быть определена во время компиляции поэтому для этой константы будет выделено место в стэке но она мне нужна только в одном месте кода

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #16 : јРав 31, 2007, 04:07:59 pm »
как я понял в ск5обки ты заключил чтобы ограничить область видимости? тогда это ужасное решение.
лучше так
Код: (cpp) [Выделить]
const int *a = new int(v.size()/2 - 1);
..........
delete a;
Цитировать
имелось ввиду что нужно написать функцию которую я буду часто использовать вдальнейшем и которая должна быть легко настраиваема
в обоих случаях можно будет вызывать функцию как func(че то там) но при использовании объекта класса настройка помоему более удобна и наглядна: func.property(аргумент)
во втором же случае ее можно будет настроить примерно так: func_properties.property(аргумент)
вааааааабще ниче не понял изъясняйсе проще, не надо писать кучу текста, пиши я хочу чтобы было так, и вот как я предлагаю:..
потомучто непонятно что-ты сравниваешь, один класс функтор, другой нет как тут можно о чем то судить??
Цитировать
По поводу 2го вопроса: если речь идет о константе, то, как вариант, можно определить ее макросом
макрос - зло, лучше их не юзать.

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #17 : јРав 31, 2007, 06:35:32 pm »
через кучу это не смешно
и будет у меня в стэке болтатца указатель который занимает столько сколько size_t да еще в куче int
тогда легче просто инт объявить
по поводу ужасного решения есть еще мнения?

если сравнивать "класс функтор" (вот как оказываетца это называетца) и связку функция + класс-утилита то что по вашему лучше?
« Последнее редактирование: јРав 31, 2007, 06:39:17 pm от de666 »

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #18 : јРав 31, 2007, 11:06:21 pm »
Цитировать
через кучу это не смешно
и будет у меня в стэке болтатца указатель который занимает столько сколько size_t да еще в куче int
пипец.. ты че до сих пор программируешь в одном 64К сегменте?? для кого расширяли адресное пространство?если ты за каждые 4 байта трясешься, то удачи тебе в программированиии на ЯВУ, тут тебя ждет много сюрпризов :wink3:
Цитировать
если сравнивать "класс функтор" (вот как оказываетца это называетца) и связку функция + класс-утилита то что по вашему лучше?
функтор нужен только там, где он нужен, в противном случае он не нужен.т.е сначала надо знать твою конечную цель.

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Трюки, приемы программирования
« Ответ #19 : јРав 31, 2007, 11:28:36 pm »
Надо всегда по обстоятельствам действовать  :nono:

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #20 : °ЯаХЫм 01, 2007, 11:07:08 am »
пипец.. ты че до сих пор программируешь в одном 64К сегменте?? для кого расширяли адресное пространство?если ты за каждые 4 байта трясешься, то удачи тебе в программированиии на ЯВУ, тут тебя ждет много сюрпризов :wink3:

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

конечную цель я говорил: настройка некоторых параметров функции

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #21 : °ЯаХЫм 01, 2007, 11:14:48 am »
Цитировать
к тому же я думаю быстродействие переменной стэка будет быстрее чем обращение по указателю
быстрее, но не намного.
Цитировать
конечную цель я говорил: настройка некоторых параметров функции
объясни получше, ато малопонятно:)

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #22 : °ЯаХЫм 01, 2007, 01:29:13 pm »
а если код в который входит этот кусочек исполняетца 1000 раз (миллион раз?) думаю ждать лишнюю минуту будет обломно особенно если это можно предотвратить при написании кода
а если надо написать time-critical код?

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

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #23 : °ЯаХЫм 01, 2007, 02:12:39 pm »
Цитировать
а если код в который входит этот кусочек исполняетца 1000 раз (миллион раз?)
даже если будет исполнятся триллиард раз, он не увеличит время даже на 1 наносекунду..
по теме: с френдовой ф-ией некрасиво, так что лучше с функтором, а еще лучше придумать что-нить другое т.к не вижу смысло ни от того, ни от другого.
Почему бы функцию минимизатор не оставить простым методом класса?

Оффлайн de666

  • Губернский секретарь
  • **
  • Сообщений: 41
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #24 : °ЯаХЫм 01, 2007, 03:10:03 pm »
ладно впринципе вопрос исчерпал себя

ps
даже если будет исполнятся триллиард раз, он не увеличит время даже на 1 наносекунду..
...
Код: (cpp) [Выделить]
#include <iostream>
#include <ctime>

using namespace std;

void main()
{
    const int n = 10000000000;
    double v = 0.; //stack variable
    double *p = new double; //heap variable

    clock_t t0 = clock(), t1;
    for (size_t i = 0; i<n; ++i)
        ++v;
    t1 = clock();
    std::cout << ((t1 - t0)/CLOCKS_PER_SEC) << std::endl;
    std::cout << v << std::endl;

    *p = 0;
    t0 = clock();
    for (size_t i = 0; i<n; ++i)
        ++(*p);
    t1 = clock();
    std::cout << ((t1 - t0)/CLOCKS_PER_SEC) << std::endl;
    std::cout << *p << std::endl;
    delete p;
}
время выполнения 4 к 3 в пользу стэковой переменной
то же самое если указатель переделать на ссылку (что логично)
что я делаю неправильно?
« Последнее редактирование: °ЯаХЫм 01, 2007, 09:53:38 pm от de666 »

Оффлайн Адамантэус

  • Коллежский советник
  • *****
  • Сообщений: 725
  • Репутация: 24
  • Пол: Мужской
  • Телезритель
Re: Трюки, приемы программирования
« Ответ #25 : °ЯаХЫм 03, 2007, 10:40:10 am »
 Судя по постам вы сишники, обсуждающие аппаратную оптимизацию находящуюся в ведении ассемблеровцев.  Причём похоже пишите на борладнах, которые в общем-то не профессиональная система для системных программистов, а учебная и для прикладных. Могу поделится опытом :
1) скорость меряет профайлер и выдаёт "срез" времени выполнения по функциям, так что гадать сколько при каком количестве выполнений не нужно
2) есть счётчик  тактов который позволят выбрать оптимальный ассембреный код под отладчиком (если его выводить в отладочном режиме в строку)
3) размер конкретного кода сгенерированного компилятором можно определить по адресам между командами в отладчике, позволяющем просматривать ассемблерный код
4) если у вас нет таких возможностей то гадать какой ассемблерный код выдаст оптимизирующий компилятор просто бессмысленно :dash2:

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #26 : °ЯаХЫм 03, 2007, 09:35:25 pm »
Цитировать
4) если у вас нет таких возможностей то гадать какой ассемблерный код выдаст оптимизирующий компилятор просто бессмысленно
вообще то в нормальных IDE есть дизассемблер :wink3:

Оффлайн Адамантэус

  • Коллежский советник
  • *****
  • Сообщений: 725
  • Репутация: 24
  • Пол: Мужской
  • Телезритель
Re: Трюки, приемы программирования
« Ответ #27 : °ЯаХЫм 05, 2007, 10:24:35 am »
 Тут на самом деле вопрос не в тривиальном дизассемблере, который иногда "отваливается" от строк исходного текста как у Борланд, а в ориентированности всей системы на профессиональную работу, и наличие соответсвующих средств оптимизации, которые делают всё с "вежливостью королей". :rtfm:

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Трюки, приемы программирования
« Ответ #28 : °ЯаХЫм 11, 2007, 10:20:05 pm »
Хех, а как вам такой трюк? Всегда любил такие приколы :)

ЗЫ: фсьо бизапасна!

[вложение удалено Администратором]

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #29 : °ЯаХЫм 12, 2007, 04:38:27 pm »
TERRAPOD, поясни, че то я прикола не понял :)

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Трюки, приемы программирования
« Ответ #30 : °ЯаХЫм 12, 2007, 05:42:29 pm »
Ну и ладно  :)

agl

  • Гость
Re: Трюки, приемы программирования
« Ответ #31 : °ЯаХЫм 12, 2007, 10:47:54 pm »
TERRAPOD, поясни, че то я прикола не понял :)
Видать прога, которая свой код выводит.

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Трюки, приемы программирования
« Ответ #32 : °ЯаХЫм 13, 2007, 12:22:48 am »
На самом деле!
Довольно интересная задачка, для меня это вообще что-то вроде парадокса (:
Уж не знаю почему.

beholder

  • Гость
Re: Трюки, приемы программирования
« Ответ #33 : °ЯаХЫм 13, 2007, 01:41:08 pm »
аа, а я думал ты просто запихал в cout :)

Оффлайн Shymep

  • Администратор
  • Действительный статский советник
  • *****
  • Сообщений: 1909
  • Репутация: 58
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #34 : °ЯаХЫм 13, 2007, 02:06:28 pm »
На самом деле!
Довольно интересная задачка, для меня это вообще что-то вроде парадокса (:
Уж не знаю почему.
Классный парадокс! +1.
Smile and the world will smile back :wink:

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Трюки, приемы программирования
« Ответ #35 : °ЯаХЫм 14, 2007, 04:34:11 pm »
Цитировать
аа, а я думал ты просто запихал в cout
Так и есть  :wink3:

agl

  • Гость
Re: Трюки, приемы программирования
« Ответ #36 : °ЯаХЫм 14, 2007, 08:45:51 pm »
TERRAPOD, приведи исходники, если это не секрет. Я не думаю что все совсем так и есть как думал beholder.

Оффлайн Shymep

  • Администратор
  • Действительный статский советник
  • *****
  • Сообщений: 1909
  • Репутация: 58
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #37 : °ЯаХЫм 14, 2007, 09:35:10 pm »
agl, исходник выводится на экран или в скрипт :)
Smile and the world will smile back :wink:

agl

  • Гость
Re: Трюки, приемы программирования
« Ответ #38 : °ЯаХЫм 14, 2007, 10:25:39 pm »
И то правда  :mrgreen: Щас проверю что там написано))

Оффлайн HapppyPerson

  • Коллежский регистратор
  • *
  • Сообщений: 1
  • Репутация: 0
Re: Трюки, приемы программирования
« Ответ #39 : °ТУгбв 14, 2007, 09:34:47 am »
Бан

Администратор
« Последнее редактирование: °ТУгбв 14, 2007, 02:27:38 pm от Shymep »

Оффлайн Адамантэус

  • Коллежский советник
  • *****
  • Сообщений: 725
  • Репутация: 24
  • Пол: Мужской
  • Телезритель
Re: Трюки, приемы программирования
« Ответ #40 : °ТУгбв 14, 2007, 10:08:39 am »
 Как гласит народный афоризм : "За что купил, за то и продал". Верно ? Да кто хочет может посмотреть подстелил ли ему там соломку ?  :lol2:

Оффлайн Granata005

  • злой бомб
  • Статский советник
  • *****
  • Сообщений: 891
  • Репутация: 31
  • Пол: Мужской
  • Lantorg.com
Re: Трюки, приемы программирования
« Ответ #41 : °ТУгбв 15, 2007, 08:58:03 am »
Вот здесь лежат ссылки на книги по теме "Основы программирования, алгоритмы, теория"

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

Оффлайн Granata005

  • злой бомб
  • Статский советник
  • *****
  • Сообщений: 891
  • Репутация: 31
  • Пол: Мужской
  • Lantorg.com
Re: Трюки, приемы программирования
« Ответ #42 : °ТУгбв 15, 2007, 09:00:07 am »
Решение сложных и олимпиадных задач по программированию

http://rapidshare.cоm/files/4468212/Reshen_slоzh_i_оlimp_zadach.rar

Цитировать
В книге рассматриваются решения оригинальных задач международных и национальных олимпиад по информатике и программированию для школьников и студентов. Задачи сгруппированы по темам: максимальный поток, минимальное остовное дерево, деревья, скрытые графы, стратегические игры, табло Янга. В начале каждой главы лаконично, но доступно излагается необходимый теоретический материал по теме, затем для каждой задачи приводятся условие, идея решения и описание конкретной реализации на языке программирования Паскаль. Для школьников, студентов и их преподавателей

Оффлайн Granata005

  • злой бомб
  • Статский советник
  • *****
  • Сообщений: 891
  • Репутация: 31
  • Пол: Мужской
  • Lantorg.com
Re: Трюки, приемы программирования
« Ответ #43 : °ТУгбв 15, 2007, 09:00:42 am »
Жемчужины творчества программистов

http://rapidshare.de/files/32678694/Zhemch_tvоr_prоgram.rar

Цитировать
В книге американского автора на различных примерах из практики программирования показано, как хорошее понимание особенностей поставленной задачи позволяет найти оптимальное по быстродействию, объему требуемой памяти, легкости модификации решения. Наряду с конкретными примерами даны общие рекомендации по составлению оптимальных алгоритмов и программ. Рассмотрение построено по следующему принципу: постановка задачи, пример традиционного решения и объяснение его недостатков, углубленный анализ задачи и найденное в результате этого лучшее решение, изложение ряда принципов грамотного программирования. Для программистов.

Оффлайн Granata005

  • злой бомб
  • Статский советник
  • *****
  • Сообщений: 891
  • Репутация: 31
  • Пол: Мужской
  • Lantorg.com
Re: Трюки, приемы программирования
« Ответ #44 : °ТУгбв 15, 2007, 09:01:30 am »
Жемчужины программирования

http://rapidshare.cоm/files/2438594/Zhemch_prоgram.rar

Цитировать
Эта книга предназначена для программистов. Хороший программист должен знать все, что написано до него, только тогда он будет писать хорошие программы. Главы этой книги посвящены наиболее привлекательному аспекту профессии программиста: жемчужинам программирования, рождающимся за пределами работы, в области фантазии и творчества. В них рассматриваются: постановка задач, теория алгоритмов, структуры данных, вопросы повышения эффективности кода, а также верификация и тестирование программ

Оффлайн Granata005

  • злой бомб
  • Статский советник
  • *****
  • Сообщений: 891
  • Репутация: 31
  • Пол: Мужской
  • Lantorg.com
Re: Трюки, приемы программирования
« Ответ #45 : °ТУгбв 15, 2007, 09:02:01 am »
Алгоритмические трюки для программистов

http://rapidshare.de/files/11694707/Algoritmicheskie_truki.rar

Цитировать
В этой книге слову "хакер" возвращено его первозданное значение — человека увлеченного, талантливого программиста, способного к созданию чрезвычайно эффективного н элегантного кода. В книге воплощен сорокалетний стаж ее автора в области разработки компиляторов и архитектуры компьютеров. Здесь вы найдете множество приемов для работы с отдельными битами, байтами, вычисления различных целочисленных функций; большей части материала сопутствует строгое математическое обоснование. Каким бы не был ваш профессионализм — вы обязательно найдете в этой книге новое для себя; кроме того, книга заставит вас посмотреть на уже знакомые вещи с новой стороны. Не в меньшей степени эта книга пригодится и начинающему программисту, который может просто воспользоваться готовыми советами из книги, применяя их в своей повседневной практике.

Оффлайн doctor.java

  • Коллежский регистратор
  • *
  • Сообщений: 10
  • Репутация: 0
  • Пол: Мужской
Re: Трюки, приемы программирования
« Ответ #46 : °ТУгбв 09, 2016, 06:36:24 pm »
Информации хорошей много, жаль что форум почти мертвый