Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Тонкости хитрости и приемы программирования  (Прочитано 22135 раз)
0 Пользователей и 1 Гость смотрят эту тему.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« : 09-09-2004 08:17 » 

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

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Serega
Гость
« Ответ #1 : 09-09-2004 08:34 » 

начни с Кнута

и халявы не будет Отлично
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #2 : 09-09-2004 09:13 » 

Дай ссы лку пожалуйста Желательно не в формате TEX...
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 09-09-2004 09:31 » 

USBLexus, вот тут глянь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #4 : 09-09-2004 09:53 » 

Ok спасибо Щас буду внешку искать чтобы всю эту кипу выкачать Жаль
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 09-09-2004 10:44 » 

USBLexus, однажды сын Птолемея, египетского царя, спросил Евклида, можно ли нахаляву постичь геометрию.  Сын царя, как никак.

Ну так здесь та же фигня Улыбаюсь
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #6 : 10-09-2004 01:57 » 

А я... я... я так надеялся   Так больше нельзя...

Выкачал наконецто Буду читать кнута)))
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #7 : 10-09-2004 07:29 » 

Цитата: USBLexus
А я... я... я так надеялся   Так больше нельзя...

Выкачал наконецто Буду читать кнута)))


Ню ню Улыбаюсь Книга то не для слабонервных  Жжешь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 10-09-2004 09:38 » 

Цитата: MOPO3
Цитата: USBLexus
А я... я... я так надеялся   Так больше нельзя...

Выкачал наконецто Буду читать кнута)))


Ню ню Улыбаюсь Книга то не для слабонервных  Жжешь


и для подавляющего большинства программистов бесполезна (ИМХО).

На мой взгляд, для начала больше подходят книга Вирта "Алгоритмы + структуры данных" и книга Aхо и Ульмана "Алгоритмы. Построение и анализ".  Обе книги чётко и компактно раскрывают основные структуры данных, не вдаваясь в обсуждение бесконечных тонкостей.

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

Но это касается только программирования в малом -- в пределах нескольких функций или одного объекта.  Не менее (возможно, даже более) важно сейчас уметь эффективно разрабатывать программы, которые используют более одного объекта. Поэтому настоятельно рекомендую изучить Design Patterns (которые у нас перевели как "Шаблоны проектирования") -- книга о том, что делать во многих часто встречающихся случаях.  Книга очень хорошо написана, предлагает действительно полезные приёмы.

Для очень большых систем, особенно распределённых, есть множество типовых задач высокого уровня, который принято называть "архитектурой".  Для этого уровня тоже начали выделять и публиковать эффективные приёмы проектирования, уже вышла довольно интересная книга "Architectural Patterns" (в 2-х томах).  Но это уже для "птиц высокого полёта", архитекторов и системных дизайнеров.

Помимо проектирования/программирования есть такие важные направления как сбор и анализ требований, тестирование, развёртывание, разработка документации.  Все они описаны в соответствующих книгах.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #9 : 10-09-2004 09:47 » 

Как говорил мой препод насчёт Кнута : "Каждый уважающий себя программер, может не читать Кнута, но все три тома МАСТ ХЭВ!!!"  Отлично
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #10 : 16-09-2004 10:22 » 

npak, а теперь пожалуйст по подробнее вышла у нас или у них и на каком языке и точное название или автора
Записан

С уважением Lapulya
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 16-09-2004 13:36 » 

lapulya, Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
http://www.amazon.com/exec/obidos/tg/detail/-/0471958697/qid=1095341664/sr=1-9/ref=sr_1_9/103-5274634-2519039?v=glance&s=books

Первый том умеренно интересный, а второй посвящён паттернам архитектуры  распределённых приложений.  Очень интересные рецепты предлагают.
http://www.cs.wustl.edu/~schmidt/POSA/
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Alanir Alonedaw
Гость
« Ответ #12 : 18-09-2004 08:18 » 

Моё личное мнение на этот вопрос:
Только ты сам сможешь достичь высокого мастества, при чём ни как сын Птоломея. В первую очередь я говорю о самообучении :!:
Когда ты сам разгребаешься со всеми алгоритмами, то не ориентируешься на шаблоны(книги, подсказки друзей), а значит есть вариант того, что ты будешь много выше их, ведь ты не знаешь какой уровень у них(птоому что ты их не слушаешь(читаешь)), а стремишься быть максимально высоко по своим возможностям.
ИМХО
Именно по этому я всегда строю свои алгоритмы о различных вопросах, а в случае, если мне указывают на малоэффективность - анализирую и, в случае правоту указывающего, исправляю, но опять таки пытаюсь сделать ещё лучше, внося что-то своё, что-то чего не было(конечно же, если выходит лучше Улыбаюсь).
Записан
Mfcer__
Команда клуба

ru
Offline Offline

« Ответ #13 : 18-09-2004 22:00 » 

Цитата
Если кто такую знает дайте ссылку пожалуйста....

Генри С. Уоррен, мл.
Алгоритмические трюки для программистов
на озоне можно посмотреть подробнее, в электронном виде пока не встречал
http://www.ozon.ru/?context=detail&id=1458852
Записан
Xeysan
Гость
« Ответ #14 : 19-09-2004 09:19 » 

Я смотрю большинство здесь ударилось в алгоритмы  Улыбаюсь , а ведь вопрос задан в профильном форуме, так что конкретно по С++ вот....

www.boost.org - библиотека, в которой все равно придеться разобраться 8)
Но сначала советую прочесть несколько ( лучше все Улыбаюсь ) книги отсюда  http://anatolix.naumen.ru/cppbooks.htm
Записан
Alanir Alonedaw
Гость
« Ответ #15 : 19-09-2004 10:56 » 

Эх люди, люди... Почему все всё меньше хотят думать сами? Жаль
И не надо мне говорить, мол: "Зачем изобретать велосипед".
Записан
Migmile
Помогающий

ru
Offline Offline

« Ответ #16 : 04-10-2004 16:15 » 

Только набив огромное кол-во шишек на лбу (в основном своем!) будешь на подсознании находить ошибки! Поэтому - ПРАКТИКА, ПРАКТИКА и еще раз ПРАКТИКА (не сильно алкагольная Отлично )
Записан
Alanir Alonedaw
Гость
« Ответ #17 : 05-10-2004 07:40 » 

Золотые слова...
Записан
Mad
Гость
« Ответ #18 : 16-10-2004 12:56 » 

Alanir Alonedaw, А я всетаки скажу "зачем изобретать велосипед".

Как правильно сказал npak, сейчас перед программистом ставятся достаточно комплексные задачи, и если ты работаеш над создание системы по  обработки данных, на пример, то ты конечно можеш провозиться кучу времени над своим алгоритмом кеширования промежуточных результатов и , возмоно, получиш прирост производительности на 5-10%. Вроде не плохо, но ведь и стандартные методы оставляют более половины процесорного времени на другие задачи. В итоге ты, со своим "изобретением велосипеда", провозишся над проэктом в два раза дольше, а в итоге заказчик разницы все равно не увидит.

Общий подход, по моему мнению, должен быть таков : написал с использованием "стандартных велосипедов" и еслм производительность устраивает, то хорошо. Нет - изобретай свои.
Записан
Alanir Alonedaw
Гость
« Ответ #19 : 17-10-2004 09:32 » 

Цитата

то ты конечно можеш провозиться кучу времени над своим алгоритмом кеширования промежуточных результатов и , возмоно, получиш прирост производительности на 5-10%.

Из нано-секунд складываются мили-секунду, из тех в свою очередь секунды, а секунда для компьютера - это не мало. :!:
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 17-10-2004 15:09 » 

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

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #21 : 18-10-2004 08:10 » 

Scorp__),  Отлично  Отлично  Отлично ща просто лопну.... мдаааа в таких случаях самое главное модульность!!! чтобы потом не рыскать по всему коду, а просто взять и грохнуть ту дребедень которую этот товарищ написал и просто реализовать все на tcp (если речь шла о сети)...

Alanir Alonedaw, мдаааа видимо ты никогда не учавствовал в крупных (а может даже и мелких) коммерческих (это главное здесь слово) проектах... дааа необходимо еще упомянуть тот факт, что в 99 процентах ты даже неполучишь не только выигрыша по сравнению с готовыми реализациями стандартных аглоритмов (я уж не говорбю об изобретении собственных), но твоя версия будет работать медленнее, а времени на ее разработку И отладку (что не маловажно, если при показе клиенту или тем более эксплуатации, из-за твоего алгоритма все упадет, а выигрышь в производительности составит считанные проценты (если вообще будет), то мое мнение такое - никогда не берись за собственную реализаю, если очень неймется изучи существующий алгоритм) будет потрачено сущееееественно больше. До кучи скажу следующее алгоритм алгоритму рознь! и для всего лишь реализации некоторых (слышишь не разработки принципиально нового, а всего лишь понимания принципа работы и реализации), требуется оооочень не кислая мат. подготовка... Хотя, хочу отметить что если твой подход не используется в работе, а просто является хобби, то это очень даже похвально !
Записан

С уважением Lapulya
Alanir Alonedaw
Гость
« Ответ #22 : 18-10-2004 12:38 » 

lapulya
Именно хобби Улыбаюсь
Я действительно не учавствовал пока что в комерческих проектах и не выполнял заказов. Если возьмусь - ясен пень буду делать по стандартам, потому что сроки жать будут.
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 18-10-2004 15:47 » new

Цитата: Alanir Alonedaw
Эх люди, люди... Почему все всё меньше хотят думать сами? Жаль
И не надо мне говорить, мол: "Зачем изобретать велосипед".


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

Цитата: Исаак Ньютон
Если я видел дальше других, то потому, что стоял на плечах гигантов
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines