Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.17;
Скачать: CL | DM;

Вниз

ПРОТОТИПИРОВАНИЕ, XP И ОДА PERL   Найти похожие ветки 

 
Tux   (2003-02-03 00:02) [0]

Тот, кто имел опыт разработки больших систем на "серьезных" языках, наверняка наступал на грабли потери управляемости

проектом при необходимости внесения изменений в один или несколько корневых классов, т.е. при изменении их интерфейса; после

этого билд не проходит, и вообще одна группа проекта не знает, что делает в это же время другая. Что касается VC++, можно с

99% долей уверенности предположить, что случилась такая ерунда - когда перестает фурычить Class Explorer. Другие косвенные

признаки - обилие маленьких служебных макросов и изобилие template-классов (не всегда). Бороться с такой ерундой по идее

должны бы case-средства, но, во-первых, тщательным планированием всего не предусмотришь, во-вторых, идея генерации и

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

кодированию, по стилю, установка догм, интенсивное общение ( почта и совещания ).
Существует идея экстремального программирования. Идея забавная и в принципе теоретически обоснована, но... На том же ++

экстремально кодить невозможно :-) для этого надо быть автоматом-гением-профессионалом-всегда выспавшимся-отдохнувшим, иначе

в багах теста можно закопаться; каждый быстро написанный и притом РАБОТАЮЩИЙ тест можно смело причислять к произведениям

искусства.
Я попробовал вот что: берем Perl и экстремально кодим на нем прототип класса, функциональный аналог. На нем же параллельно

пишутся тесты (по 30-50 строчек кода). После полного тестирования перлового прототипа воплощаем его же на С, Delphi... кому

как угодно. Почему Перл?

1) Не требует компиляции (баг - поправил - тут же запустил)
2) Компактен
3) Простая работа с текстами
4) Простая работа с вводом-выводом
5) Модульность
6) (своеобразная, но полностью функциональная) поддержка ООП
7) Прост
8) Хренова туча сторонних модулей
9) Переносимость
10) Элементарная работа с БД
11) Поддержка COM (Win32::OLE, .wsc)

К примеру: полностью функциональный аналог COM-коллекции:

package Enum;
use strict;
use overload "@{}" => \&_NewEnum;
sub _DEBUG() {1;}

# my $enum = VDEnum->new;
# $enum->Add(10);
# $enum->Add(20);
# $enum->Add(30);
# for (@$enum) {
# print;
# }
#

sub new
{
my $self = {};
$self->{FArray} = undef;
bless($self, "Enum");
return $self;
}

sub Add
{
my $self = shift;
push(@{$self->{FArray}}, shift);
}

sub Clear
{
my $self = shift;
$self->{FArray} = undef;
}

sub Count
{
my $self = shift;
return scalar @{$self->{FArray}};
}

sub Item : lvalue
{
my $self = shift;
my $index = shift;

if ($index < 0 or $index >= scalar @{$self->{FArray}} ) {
die "VDEnum: Item index is out of range\n";
}
@{$self->{FArray}}[$index];

}

sub _NewEnum : lvalue
{
my $self = shift;
\@{$self->{FArray}};
}

return 1;


Полсотни строк кода и полчаса работы со всеми отладками.

Это все мой личный горький опыт :-) Зачем написал - сам не знаю; просто захотелось поделиться :-) Ну и узнать, у кого какие

аналогичные приемчики есть для того, чтобы жилось легче? Языки, средства?
Как Ларри Уолл говорит - "Три добродетели программиста - лень, нетерпение и высокомерие" :-)


 
DiamondShark ©   (2003-02-03 00:14) [1]

Почему Дельфи:

1) Требует компиляции, но скорость такая, что пофиг
2) Не то чтобы компактен, но пофиг
3) Простая работа с текстами
4) Простая работа с вводом-выводом
5) Модульность
6) Полностью функциональная поддержка ООП
7) Прост
8) Хренова туча сторонних модулей
9) Переносимость
10) Продвинутая работа с БД
11) Поддержка COM, встроенная в язык


 
Viktor Kushnir ©   (2003-02-03 09:48) [2]

12) И просто наше любимое средство программирования!


 
Ketmar ©   (2003-02-03 10:28) [3]

>DiamondShark © (03.02.03 00:14)
вот про пункт 9 можно поподробнее? переносимость на болванке с машины на машину не считается %-)

Satanas Nobiscum! 03-Feb-XXXVIII A.S.


 
DiamondShark ©   (2003-02-03 10:44) [4]


> Ketmar © (03.02.03 10:28)


Kylix.


 
Ketmar ©   (2003-02-03 10:47) [5]

>DiamondShark © (03.02.03 10:44)
это шутка юмора такая, да? ну попробуйте транслировать серьезный проект с d6 на kylix.

Satanas Nobiscum! 03-Feb-XXXVIII A.S.


 
DiamondShark ©   (2003-02-03 10:56) [6]


> Ketmar © (03.02.03 10:47)


А слово "переносимость" -- это вообще такое шуточное слово ;)



Страницы: 1 вся ветка

Текущий архив: 2003.02.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
3-52704
me2
2003-01-29 12:33
2003.02.17
Добавление столбцов к гриду в On-Line


1-52993
Dr. Web
2003-02-10 14:43
2003.02.17
Как програмно запустить любую программу под другим пользером?


6-53136
Kent
2002-12-24 12:55
2003.02.17
Есть ISAPI DLL, как заставить ее под Apache работать ?


14-53189
Мазут Береговой
2003-02-03 11:56
2003.02.17
Сказки...


1-52851
Бук
2003-02-07 11:50
2003.02.17
Максимизация Child