Учебник по технологии программирования

Учебник по технологии программирования Screenshot Приходилось ли вам когда-нибудь: тратить кучу времени на то, чтобы закодировать неверный алгоритм? использовать слишком сложную структуру данных? при тестировании программы пропустить очевидную проблему? тратить день на то, чтобы обнаружить ошибку, которую можно было бы найти за пять минут? сталкиваться с тем, что программа должна работать в три раза быстрее и использовать меньше памяти? затрачивать титанические усилия на то, чтобы перевести программу с рабочей станции на PC или наоборот? пытаться внести изменения в чужую программу? переписывать программу целиком, потому что разобраться в ней не удалось? Ну и как — понравилось? С программистами такое происходит все время.

Разработчик:   Unknown
      другие программы →
Лицензия:   Freeware
Размер:   717K
Язык:   
ОС:   Windows Vista (?)
Рейтинг:   0 /5 (0 голосов)

Приходилось ли вам когда-нибудь: тратить кучу времени на то, чтобы закодировать неверный алгоритм? использовать слишком сложную структуру данных? при тестировании программы пропустить очевидную проблему? тратить день на то, чтобы обнаружить ошибку, которую можно было бы найти за пять минут? сталкиваться с тем, что программа должна работать в три раза быстрее и использовать меньше памяти? затрачивать титанические усилия на то, чтобы перевести программу с рабочей станции на PC или наоборот? пытаться внести изменения в чужую программу? переписывать программу целиком, потому что разобраться в ней не удалось? Ну и как — понравилось? С программистами такое происходит все время. Однако справиться с подобными проблемами часто гораздо труднее, чем хотелось бы, поскольку такие темы, как тестирование, отладка, переносимость, производительность, альтернативы проектирования и стиль, темы, относящиеся к практике программирования, как правило, оказываются вне сферы внимания информатики и учебных курсов по программированию. Большинство программистов изучают их сами по себе, — в основном, на собственном опыте, а некоторые не изучают вообще. В мире разнообразных интерфейсов, постоянно меняющихся языков, систем и утилит, под постоянным давлением обстоятельств мы зачастую теряем из вида главные принципы, которые должны быть основанием любой хорошей программы, — простоту, четкость и универсальность. Не уделяется должного внимания инструментам и нотациям, способам записи, которые механизируют некоторые аспекты создания программ, то есть привлекают к процессу программирования сам компьютер. Эта книга построена как раз на основных принципах, применимых к информационным технологиям на любом уровне. К таким взаимосвязанным принципам относятся: простота, благодаря которой программы остаются короткими и управляемыми, четкость и ясность, которые облегчают понимание программ и людям, и машинам, обобщенность, означающая, что программа способна корректно работать в широком диапазоне ситуаций и нормально адаптироваться к новым ситуациям, и автоматизация, которая позволяет передавать машине наиболее утомительные и скучные части нашей работы. Рассматривая программирование на различных языках, от алгоритмов и структур данных, через проектирование, отладку, тестирование, до улучшения производительности, мы иллюстрируем универсальные концепции, которые не зависят ни от языка, ни от операционной системы, ни от конкретного задания. Книга родилась из нашего многолетнего опыта в написании и поддержке разнообразнейших программ, в преподавании программирования и в общении с большим количеством программистов. Мы хотим поделиться знаниями, приобретенными благодаря этому опыту, чтобы помочь программистам всех уровней работать более эффективно и профессионально. Наша книга предназначена для читателей разных категорий. Если вы школьник или студент, вам только что прочитали курс программирования и вы захотели узнать об этом предмете побольше, эта книга расширит ваше образование моментами, которые недостаточно подробно освещаются в школе. Если разработка программ составляет часть вашей работы, но не исчерпывает ее, а только дополняет другие формы, то наша книга наверняка поможет вам делать это более эффективно. Если вы профессиональный программист и чувствуете, что в свое время недостаточно изучили перечисленные выше вопросы (или же просто хотите освежить их в памяти), или если вы руководите группой программистов и хотите ставить своим подчиненным правильные задачи, материал этой книги вам обязательно пригодится. Мы надеемся, что наши советы помогут вам писать более качественные программы. Единственное, что вам необходимо, — это иметь некоторый опыт в программировании, желательно на С, C++ или Java. Естественно, чем больше ваш опыт, тем проще вам будет понять и применить наши советы, ничто не сможет сделать эксперта из новичка за 21 день. Для работающих с системами Linux и Unix многие примеры будут более знакомы, чем для тех, кто использовал только системы Windows и Macintosh, однако все без исключения найдут в этой книге рекомендации, которые облегчат им жизнь. Каждая из девяти глав, составляющих книгу, посвящена конкретному глобальному аспекту практики программирования. В главе 1 обсуждается стиль программирования. Хороший стиль настолько необходим для написания хороших программ, что мы решили начать разговор именно с него. Хорошо написанные программы лучше, чем плохо написанные, — в них меньше ошибок, их легче отлаживать и модифицировать, — поэтому задумываться о стиле надо с самого начала. В этой главе затрагивается и такой важный аспект хорошего программирования, как применение идиом, соответствующих используемому языку программирования. Алгоритмы и структуры данных — предмет обсуждения главы 2 — занимает центральное место в учебных планах всех курсов программирования. Поскольку большинство читателей в той или иной степени уже знакомо с этим материалом, мы даем лишь краткий обзор ряда алгоритмов и структур данных, которые встречаются во многих программах. Более сложные алгоритмы и структуры данных, как правило, являются производными от этих базовых вариантов, так что главное — разобраться с основами. В главе 3 описываются проектирование и реализация небольшой программы, которая иллюстрирует применение алгоритмов и структур данных в реальном программировании. Программа реализована на пяти языках; сравнение версий позволяет увидеть, как в них обрабатываются одни и те же структуры данных и как в зависимости от языка изменяются выразительные возможности и производительность. Интерфейсы между пользователями, программами и частями программ являются одной из фундаментальных основ программирования; успех того или иного программного продукта во многом определяется тем, насколько хорошо спроектированы и реализованы в нем интерфейсы. В главе 4 показана эволюция небольшой библиотеки для синтаксического разбора одного широко используемого формата данных. Хотя пример и невелик,-он иллюстрирует многие понятия, связанные с проектированием интерфейсов: абстракцию, сокрытие информации, управление ресурсами и обработку ошибок. Как бы мы ни старались писать программы корректно с первого раза, ошибки в них, а следовательно, и отладка вечны. Глава 5 описывает стратегию и тактику систематической и эффективной отладки. Среди рассматриваемых здесь аспектов назовем характеристики частых ошибок и важность "нумерологии", для которой образцы отладочных печатей часто показывают, где таится ошибка. Тестирование — это попытка дать разумное обоснование работоспособности программы. Глава 6 посвящена систематическому тестированию программ как вручную, так и с помощью\'компьютера. Тесты на граничные условия проверяют потенциальные слабые места программ. Механизация и специальная тестовая оснастка позволяют осуществлять комплексное тестирование с достаточно скромными затратами. Особым типом тестов являются стрессовые тесты, они проверяют устойчивость программ. В наши дни компьютеры настолько быстры, а компиляторы настолько хороши, что большинство программ работает достаточно быстро уже в своем первоначальном виде. Однако некоторые программы все же работают слишком медленно, или используют слишком много памяти, или и то и другое вместе. В главе 7 описываются способы, позволяющие добиться того, чтобы программа рационально использовала ресурсы и работала более эффективно. В главе 8 разговор идет о переносимости. Удачные программы живут достаточно долго, так что меняются системы, в которых их используют; нередко приходится переносить их на другие платформы или на другие машины или использовать в других странах. Смысл переносимости в том, чтобы уменьшить расходы на поддержание программы, минимизировав количество изменений, необходимых для адаптации к новому окружению. Существует большое количество языков программирования — и не только универсальных, которые мы используем для создания основной массы программ, но и специализированных, которые предназначены для решения узкого круга проблем. В главе 9 представлено несколько примеров, показывающих всю важность способа записи в программировании, и показано, как они могут использоваться для упрощения программ, облегчения перехода от проекта к реализации и даже для создания программ, которые бы сами писали другие программы. Разговор о программировании, естественно, не может обойтись без демонстрации изрядного количества кода. Большинство примеров написано специально для этой книги, но некоторые небольшие фрагменты были взяты из ранее написанных программ. Мы очень старались писать свой код хорошо; все примеры тестировались на нескольких системах. Дополнительную информацию можно получить на web-сайте, посвященном этой книге (в английском варианте — The Practice of Programming): http://tpop.awl.comБольшинство программ написано на С; есть примеры на C++ и Java; предпринят и краткий экскурс в языки скриптов. На нижнем уровне С и C++ практически идентичны, так что наши программы на С являются вполне приемлемыми программами на C++. Языки C++ и Java— прямые наследники С, они унаследовали изрядную долю синтаксиса, эффективности и выразительности С, добавив более широкие системы типов и библиотек. Мы сами в повседневной работе широко используем и эти три языка, и множество других. Выбор языка зависит от задачи: операционные системы лучше всего писать на эффективном и не давящем языке вроде С или C++; создавать на скорую руку прототипы проще на командных интерпретаторах или языках скриптов вроде Awk или Perl; для пользовательских интерфейсов хорошо подходят Visual Basic, Tcl/Tk и Java. В выборе языка для наших примеров есть глубокий педагогический смысл. Поскольку нет языка, который был бы одинаково хорош для решения всех задач, ни один конкретный язык не может лучшим образом представить все аспекты. Языки высокого уровня предопределяют некоторые проектные решения. Если же мы используем язык низйого уровня, мы получаем возможность для альтернативных решений проектных вопросов; показывая больше подробностей, мы можем обсуждать эти вопросы лучше. Опыт учит, что даже при использовании возможностей языка высокого уровня важно понимать, как они соотносятся с низким уровнем, без такого понимания можно упереться в проблемы производительности и загадочного поведения программы. Поэтому часто мы используем в своих примерах язык С, даже в тех случаях, когда в реальной работе мы бы выбрали какой-нибудь другой язык. Однако надо заметить, что в большинстве своем наши советы не привязаны ни к какому конкретному языку. Выбор структуры данных зависит от используемого языка; в некоторых языках вариантов может быть немного, в других же выбор весьма богат. Однако способ, подход, применяемый для выбора, будет одним и тем же для всех случаев. Детали тестирования и отладки различаются в разных языках, но стратегия и тактика одинаковы. Большинство способов повышения эффективности программ может быть применено к любому языку. На каком бы языке вы ни писали, вам как программисту нужно добиваться наилучшего результата с помощью тех средств, которыми вы располагаете. Хороший программист сумеет справиться со слабым языком и неудобной операционной системой, но самое идеальное программное окружение не спасет плохого программиста. Мы надеемся, что вне зависимости от имеющегося у вас на данный момент опыта программирования эта книга поможет вам писать программы лучше и с большим удовольствием.

 Скачать Учебник по технологии программирования

Учебник по технологии программирования screenshot
Программы разработчика

Task Scheduler ver 1.7 Task Scheduler ver 1.7
Unknown

Программа предназначена для планирования запуска процессов под Windows NT (95) по дню недели и времени суток с точностью до минуты.

Date Edit v 1.0 Date Edit v 1.0
Unknown

Еще одная надстройка для Виндов, которая позволит менять дату и время файлов прямо из Проводника(Explorer).

Вечный календарь Вечный календарь
Unknown

Отображение календаря c 1583 года в полноэкранном виде (для всего года).

Часовой v1.0 by Quant Software (FreeWare) - Rus Часовой v1.0 by Quant Software (FreeWare) - Rus
Unknown

Удобные часики с каледарем от 1753 до 9999 года.

Полиграфический калькулятор (FreeWare) - Rus Полиграфический калькулятор (FreeWare) - Rus
Unknown

Простой калькулятор, предназначенный для полиграфистов.

Альтернативные программы

Учебник по технологии программирования Учебник по технологии программирования
Unknown

Приходилось ли вам когда-нибудь: тратить кучу времени на то, чтобы закодировать неверный алгоритм? использовать слишком сложную структуру данных? при тестировании программы пропустить очевидную проблему? тратить день на то, чтобы обнаружить ошибку, которую можно было бы найти за пять минут? сталкиваться с тем, что программа должна работать в три раза быстрее и использовать меньше памяти? затрачивать титанические усилия на то, чтобы перевести программу с рабочей станции на PC или наоборот? пытаться внести изменения в чужую программу? переписывать программу целиком, потому что разобраться в ней не удалось? Ну и как — понравилось? С программистами такое происходит все время.

Учебник по технологии программирования 1.0 Учебник по технологии программирования 1.0 
Mike

Учебник по технологии программирования Приходилось ли вам когда-нибудь:тратить уйму времени на то, чтобы закодировать неверный алгоритм?использовать слишком сложную структуру данных?при тестировании программы пропустить очевидную проблему?тратить день на то, чтобы обнаружить ошибку, которую можно было бы найти за пять минут?сталкиваться с тем, что программа должна работать в три раза быстрее и использовать меньше памяти?затрачивать титанические усилия на то, чтобы перевести программу с рабочей станции на PC или наоборот?пытаться внести изменения в чужую программу?переписывать программу целиком, потому что разобраться в ней не удалось?Ну и как — понравилось? Мы надеемся, что вне зависимости от имеющегося у вас на данный момент опыта программирования эта книга поможет вам писать программы лучше и с большим удовольствием.

Учебник по языку Turbo Pascal в задачах и примерах Учебник по языку Turbo Pascal в задачах и примерах
Unknown

Чтобы научиться программировать, не достаточно прочитать книгу, посвященную языку программирования, надо писать программы, решать конкретные задачи.

Система макрокоманд языка ассемблер 1 Система макрокоманд языка ассемблер 1
Конюхов Дмитрий Леонидович

Система макрокоманд позволяет писать программы в привычном синтаксисе языка высокого уровня и делает тексты программ более прозрачными для чтения и восприятия.

Учебник по программированию в среде С++ Builder Учебник по программированию в среде С++ Builder
Unknown

Этот диск был задуман как руководство для самостоятельного изучения языка C/C++ в контексте его применения в среде Windows.

Учебник по Delphi 7 для начинающих Учебник по Delphi 7 для начинающих
Unknown

В последнее время резко возрос интерес к программированию.

C++ в задачах и примерах 1.0 C++ в задачах и примерах 1.0 
Mike

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

Gentee RU 2.3 Gentee RU 2.3
Gentee, Inc.

Gentee - это дружественный полнофункциональный язык программирования.

Система программирования ПРОФТ 2Л Система программирования ПРОФТ 2Л
ООО "ПОБЕДИТ"

Легкий вариант второй версии популярной системы программирования ПРОФТ.

ARTofRrogrammingIET 1.0 ARTofRrogrammingIET 1.0
VBYas Software

Искусство программирования.

Другие программы категории

Active File Compare 2.0 Active File Compare 2.0
Евгений Баянов

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

Icon XP Pro Icon XP Pro
Unknown

1st Page 2000 2.0 Final 1st Page 2000 2.0 Final
EVRSoft

1st Page 2000 2.

SMS Subscribe v1.01 SMS Subscribe v1.01
almaz

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

RV-SMS v1.0 RV-SMS v1.0
Райчев Евгений

Отправка sms-сообщений на мобильные телефоны, много операторов, записная книжка, очень проста в использовании.