Эндрю Хант - Программист-прагматик. Путь от подмастерья к мастеру

Здесь есть возможность читать онлайн «Эндрю Хант - Программист-прагматик. Путь от подмастерья к мастеру» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: М., Год выпуска: 2004, ISBN: 2004, Издательство: Лори, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программист-прагматик. Путь от подмастерья к мастеру: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программист-прагматик. Путь от подмастерья к мастеру»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Находясь на переднем крае программирования, книга «Программист-прагматик. Путь от подмастерья к мастеру» абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.
Прочитав эту книгу, вы научитесь:
Бороться с недостатками программного обеспечения;
Избегать ловушек, связанных с дублированием знания;
Создавать гибкие, динамичные и адаптируемые программы;
Избегать программирования в расчете на совпадение;
Защищать вашу программу при помощи контрактов, утверждений и исключений;
Собирать реальные требования;
Осуществлять безжалостное и эффективное тестирование;
Приводить в восторг ваших пользователей;
Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Программист-прагматик. Путь от подмастерья к мастеру — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программист-прагматик. Путь от подмастерья к мастеру», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

etest.c etest.h: etest.inc enumerated.pl

perl enumerated.pl etest.inc

Упражнение 12 из раздела «Обработка текста»

Ответ: Вот ответ, написанный на языке Perl.

my $dir = shift or die «Missing directory» ,

for my Sfile (glob(u$dir/*.pr)) {

open(IP, «$file») or die «Opening $file: $!";

undef $/; # Turn off input record separator -

my Scontent = ; # read whole file as one string.

close(IP);

if (Scontent Гrusestrict/m) {

rename Sfile, «$file.bak» or die «Renaming $file: $!"; open(OP, «>$file») or die «Creating $file: $!";

# Put 'use strict' on first line that

# doesn't start #

Scontent =» sr(V.#)/\nuse strict;\n\n/m',

print OP Scontent; close(OP);

print «Updated $file\n";

)

else {

print «Sfile already strict\n":

)

}

Упражнение 13 из раздела «Генераторы исходных текстов»

Ответ: Решение реализовано на языке Perl. В программе происходит динамическая загрузка модуля для генерации требуемого языка, так что добавление новых языков не представляет труда. Главная программа загружает внутреннюю часть (основанную на параметре командной строки), затем считывает ее входные данные и вызывает подпрограммы генерации текста, основанные на содержимом каждой из строк. Мы особенно не суетимся, если речь идет об обработке ошибок: если что-то не так, узнаем об этом довольно быстро.

my lang = shift or die «Missing language";

$lang .= «_cg.pm";

require <$lang> or die «Couldn't load $lang";

# Read and parse the file

my $name;

while (<>) {

chomp;

if (/^ \s*$/) {CG::blankLine();)

elsif ((/^ \#(.*)/) {CG::comment($1);}

elsif ((/^M\s*(.+)/) {CG::startMsg($1); $name = $1;}

elsif ((/^E/) {CG::endMsg($name);}

elsif (/^F\s*(\w+)\s+(\w+)$/) {CG::simpleType($1,$2);}

elsif (/^F\s*(\w+)\s+(\w+)\[(\d+)\]$/) {CG::arrayType $1,$2,$3);}

else {

die «Invalid line: $ «;

}

}

Написание языковой серверной части не составит труда: создайте модуль, который реализует шесть точек входа. Вот генератор текста на языке С:

#!/usr/bin/perl – w

package CG;

use strict;

# Code generator for 'C' (see cg_base.pl)

sub blankLine() {print "\n"; }

sub comment() {print «/*$_[0] */\n"; }

sub startMsg() {print «typedef struct {\n"; }

sub endMsg() {print «} $_[0];\n\n"; }

sub arrayType() {

my ($name, $type, $size) = @_;

print « $type $name\[$size];\n":

}

sub simpleType{) {

my ($name, $type) = @_;

print « $type $пате;\п";

}

1;

А вот генератор текста на языке Pascal:

#!/usr/bin/perl – w

package CG;

use strict;

# Code generator for 'Pascal' (see cg_base.pl)

sub blankLine() {print «V;)

sub comment() {print «{$_[0] }\n";)

sub startMsg() {print «$_[0] = packed record\n"; }

sub endMsg() {print «end;\n\n"; }

sub arrayType() {

my ($name, $type, $size) = @_;

$size--;

print» $name: array[0…$size] of $type;\n";

)

sub simpleType() {

my ($name, $type) = @_;

print» $name: $type;\n7 ',

}

1;

Упражнение 14 из раздела «Проектирование по контракту»

Ответ: Этот пример на языке Eiffel удачен. Мы требуем передачи непустых данных и гарантируем, что семантика циклического двунаправленного списка будет соблюдена. Это также способствует нахождению сохраненной строки. Поскольку это некий отложенный класс, то действительный класс, его реализующий, допускает использование любого основного механизма по своему усмотрению. Он может использовать указатели или массив, или что-то еще; пока он соблюдает контракт, мы не беспокоимся.

Упражнение 15 из раздела «Проектирование по контракту»

Ответ: Это неудачно. Математическое действие в индексном выражении (index-1) не будет работать с граничными условиями, подобными первой точке входа. Постусловие предполагает определенную реализацию; контракты должны быть более абстрактными по сравнению с указанным выше.

Упражнение 16 из раздела «Проектирование по контракту»

Ответ 16: Это удачный контракт, но неудачная реализация. Здесь высовывает свою уродливую голову ошибка типа «Heisenbug» [URL52]. Вероятно, программист допустил опечатку – набрал pop вместо top. Хотя это простой и надуманный пример, весьма трудно диагностировать побочные эффекты в утверждениях (или в любом, самом неожиданном месте в программе).

Упражнение 17 из раздела «Проектирование по контракту»

Ответ: Мы продемонстрируем функциональные сигнатуры на языке Java, обозначая предусловия и постусловия в соответствии с iContract. Сначала инвариант для класса:

/**

* @invariant getSpeed() >0

* implies isFull() // Не запускать пустое

* @invariant getSpeed()>=0 &&

* getSpeed() <10 // Проверка границ

*/

Затем предусловия и постусловия:

/**

* @pre Math.abs(getSpeed() – х) <= 1 // Единственный выбор

* @рге х>= 0 && х > 10 // Проверка границ

* @post getSpeed() == х // Проверка скорости

*/

public void setSpeed (final int x)

/**

* @pre !isFull() // Heзаполнять дважды

* @post isFull() // Убедитесь, что было выполнено

*/

void fill()

/**

* @pre isFull() // He очищатьдважды

* @post !isFull() // Убедиться, что выполнено

*/

void empty()

Упражнение 18 из раздела «Проектирование по контракту»

Ответ: В этом ряду содержится 21 число. Если вы ответили «20», то допустили так называемую ошибку «поста охраны».

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программист-прагматик. Путь от подмастерья к мастеру»

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


Отзывы о книге «Программист-прагматик. Путь от подмастерья к мастеру»

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

x