Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2004-01-20

Re: Автоматизация программирования Re: рутина

Hello Евгений,

Tuesday, January 20, 2004, 3:32:28 PM, you wrote:

Е> Ну это уж больно радикально. Я просто хотел узнать, одинок ли я в своих мыслях
Е> и есть ли у кого какие мысли по поводу уменьшения рутины?
Е> Может, кто-нибудь занимался автоматизацией программирования. Я вот, например,
Е> видел в одном проекте автоматическую генерацию классов-оберток для БД. Может
Е> у кого есть сходный опыт?

Интересные мысли! Я уже 6-й год программирую, с первого курса института.
И сразу меня заинтересовала эта тема, т.е. начал я с нелогичности
некотрых вещей в языках программирования, невозможности сделать что-то
хотя с точки зрения кода (на ассемблере) это очень просто. Потом
обратил внимание на дикую тенденцию увеличения размера exe'шников по
мере развития выч.техники, т.е. программа которая выводит
'hello,world' по логике вещей должна весить всего-то десятки байт, а реально
получаются мегабайты (на C++ Builder 5). И наконец, работая над
коммерческими проектами, обратил внимание на принципиальную
невозможность нормальной разработки проектов, управления этими
проектами и т.д. Т.е. сейчас ситуация такая что старыми методами
(программирование как написание текстового кода), появившимися сразу
после перфокарт и т.п., пытаются решать несоизмеримо более сложные задачи.
ИМХО, ничего не получится. Я в перспективе планирую реализовать
собственный проект по созданию системы программирования, в которой
изначально будут совсем другие подходы, пока не имеющие аналогов.

Методы генерации оберток - это ИМХО тупиковый путь, приводящий
к раздуванию кода и появлению огромного количества библиотек, которые
надо знать. И что самое главное, у которых есть свои внутренние
тонкости, мало где документированные (пример - MFC, удаление объектов,
некоторые объекты сами себя удаляют а для других нужно использовать delete).

Пользуясь случаем, предлагаю обсудить какие улучшения можно ввести в
языки программирования и системы разработки (ну у кого что наболело :))

   2004-01-20 23:58:38 (#59668)

Re[3]: Создание школьного расписания

Здарова, Денис!

17 января 2004 г., суббота, 14:47:23, ты намылил:

Д> Ну я же не прошу ПИСАТЬ алгоритм! Написать-то я его и сам... НО, какое
Д> будет его качество, скорость выполнения? Я уверен, что здесь есть
Д> люди, гораздо больше разбирающиеся в таких вещах, чем я и надеюсь на
Д> их помощь.

Денису я уже выслал. Решил кинуть в лист на всеобщее порицание ;)
Поиздевайтесь на здоровье.
Малышев Георгий>Я писал на скорую руку, так что стиль не КРИТИКУЙТЕ.
А меня критикуйте сколько влезет 8')

Кстати вопрос модератору:
В лист можно кидать мыло с прикрепленным архивом? Если нет
посоветуйте маленькую прогу для создания UUE.

==Project1.dpr==
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
==End Project1.dpr==

==Unit1.dfm==
object Form1: TForm1
Left = 200
Top = 113
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object LesMemo: TMemo
Left = 0
Top = 0
Width = 100
Height = 160
Lines.Strings = (
'Русский'
'Английский'
'Математика'
'Физика'
'История'
'Химия'
'Физкультура'
'Биология'
'Литература'
'География')
TabOrder = 0
end
object LesFactorMemo: TMemo
Left = 101
Top = 0
Width = 30
Height = 160
Lines.Strings = (
'8'
'12'
'15'
'14'
'7'
'10'
'1'
'6'
'11'
'8')
TabOrder = 1
end
object Button1: TButton
Left = 190
Top = 36
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 2
OnClick = Button1Click
end
object LesAmountMemo: TMemo
Left = 132
Top = 0
Width = 30
Height = 160
Lines.Strings = (
'3'
'4'
'6'
'5'
'1'
'4'
'2'
'2'
'2'
'2')
TabOrder = 3
end
object DayAmountEdit: TEdit
Left = 180
Top = 0
Width = 121
Height = 21
TabOrder = 4
Text = '6'
end
object MaxFactorEdit: TEdit
Left = 330
Top = 0
Width = 121
Height = 21
TabOrder = 5
Text = '70'
end
end
==End Unit1.dfm==

==Unit1.pas==
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

const max=20;
type
TForm1 = class(TForm)
LesMemo: TMemo;
LesFactorMemo: TMemo;
Button1: TButton;
LesAmountMemo: TMemo;
DayAmountEdit: TEdit;
MaxFactorEdit: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
Lessons: array [1..max] of String;
LessonsFactor: array [1..max] of Integer;
LessonsAmount, Tmp: array [1..max] of Integer;
TimeTable: array [1..60] of String;
TimeTableMemo: array [1..6] of TMemo;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{$O-}
procedure TForm1.Button1Click(Sender: TObject);
var i, j: Integer;
DayAmount: Integer;
MaxLesPerDay: Integer;
LesPerWeek: Integer;
Done: Boolean;
MaxFactor: Integer;
LesAmount: Integer;
Factor: Integer;
Index: Integer;
Count: Integer;
FTmp: Integer;
label Hole;
begin
MaxFactor := StrToInt(MaxFactorEdit.Text);
LesPerWeek := 0;
DayAmount := StrToInt(DayAmountEdit.Text);
LesAmount := LesMemo.Lines.Count;
for i := 0 to LesAmount - 1 do
begin
Lessons[i+1] := LesMemo.Lines[i];
LessonsFactor[i+1] := StrToInt(LesFactorMemo.Lines[i]);
LessonsAmount[i+1] := StrToInt(LesAmountMemo.Lines[i]);
LesPerWeek := LesPerWeek + LessonsAmount[i+1];
// MaxFactor := MaxFactor + LesFactor[i+1];
end;
MaxLesPerDay := LesPerWeek div DayAmount + 1;
for i := 1 to DayAmount do
begin
TimeTableMemo[i] := TMemo.Create(Form1);
TimeTableMemo[i].Parent := Form1;
TimeTableMemo[i].Top := 200;
TimeTableMemo[i].Width := 100;
TimeTableMemo[i].Height := 160;
TimeTableMemo[i].Left := (i-1) * 100 + i - 1;
end;
Done := True;

repeat
Tmp := LessonsAmount;
for i := 1 to LesAmount do
Tmp[i] := Tmp[i] * LessonsFactor[i];
Tmp[max] := 0;
for i := 1 to DayAmount do
begin
Factor := 0;
TimeTable[i] := IntToStr(i) + '-й день' + #13#10 + '=====';
Count := 0;
for j := 1 to LesAmount do
begin
FTmp := Tmp[j];
Factor := Factor + Tmp[j];
while FTmp>0 do
begin
FTmp := FTmp - LessonsFactor[j];
inc(Count);
end;
end;
if (Count < MaxLesPerDay) or (Factor<MaxFactor) then
begin
for j := 1 to LesAmount do
while Tmp[j]>0 do
begin
Tmp[j] := Tmp[j] - LessonsFactor[j];
TimeTable[i] := TimeTable[i] + #13#10 + Lessons[j];
end;
GoTo Hole;
end;
j:=0;
Factor := 0;
while (j < Random(2) - 1 + MaxLesPerDay)
and (Factor <= MaxFactor) do
begin
inc(j);
Index := max;
while Tmp[Index]<=0 do
Index := random(LesAmount) + 1;
Factor := Factor + LessonsFactor[Index];
Tmp[Index] := Tmp[Index] - LessonsFactor[Index];
TimeTable[i] := TimeTable[i] + #13#10 + Lessons[Index];
end;
Hole:
TimeTableMemo[i].Lines.Add(TimeTable[i]);
Application.ProcessMessages;
end;
Done := False;
until not Done;
end;
{$O+}

procedure TForm1.FormDestroy(Sender: TObject);
var i: integer;
begin
for i := 1 to StrToInt(DayAmountEdit.Text) do
TimetableMemo[i].Free;
end;

end.
==End Unit1.pas==

--
Хочешь яркого и быстрого - сожги коробок спичек.

   Томилов Александр 2004-01-20 23:16:38 (#59647)

Re: MSDN

DON> Народ, MSDN использует hh.exe из дир. WINDOWS, а уменя этого EXE нет.
DON> Откуда он вообще берётся?

Да, пардон! Он у меня всё-таки есть, но всё равно при запуске из
главного меню ошибка: "Cannot open the file C:\Program Files\Microsoft
Visual Studio\MSDN98\98VS\1033\msdnvs98.col."

   2004-01-20 21:04:24 (#59554)

Re: Автоматизация программирования Re: рутина

Приветствую!

??>> Ответ простой: а Вы бросьте программирование - тогда сразу поймете,
??>> что творчество, а что нет :))

Е> Ну это уж больно радикально. Я просто хотел узнать, одинок ли я в своих
Е> мыслях и есть ли у кого какие мысли по поводу уменьшения рутины?
Е> Может, кто-нибудь занимался автоматизацией программирования. Я вот,
Е> например, видел в одном проекте автоматическую генерацию классов-оберток
Е> для БД. Может у кого есть сходный опыт?

Что у программиста, что у писателя все средства под рукой... И он сам их
изобретает! Представьте, что Достоевский или Гоголь пользуются шаблонами для
своих произведений. Некоторые писатели так и делают, но это ремесло, а не
творчество.
Скажем так, куча софта сгенерированного на Delphi это дань коммерческим
проектам, в этом нет ничего плохого, а вот Apache это исскуство.
Думаю, вывод ясен.

--
С уважением, Иван
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   2004-01-20 20:47:47 (#59544)

MSDN

Народ, MSDN использует hh.exe из дир. WINDOWS, а уменя этого EXE нет.
Откуда он вообще берётся?

   2004-01-20 20:43:09 (#59543)

Re[3]: ViVo Help!!!

Hi!
Ну дык через TMediaPlayer Record'ишь себе и все!

   2004-01-20 20:34:09 (#59534)

Re: Автоматизация программирования Re: рут ина

В сообщении от Вторник 20 Январь 2004 17:28 Eugene Manaev написал:
> Ведь тема-то интересная, перспективная. Если правильно подойти к этому
> вопросу, то можно командой из нескольких человек большие проекты
> быстро клепать :) И зарабатывать много денег :)

КЛЕПАТЬ это не программировать :)
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   Dima Fedotov 2004-01-20 19:22:06 (#59481)

Re: рутина

Здраствуйте, Magistr!

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

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

>Ну и конечно творческое мышление и фантазия проявляется в
>"поздравлениях" шефу, зашифрованных в комментариях в коде программы.
>:)

:)))

   2004-01-20 18:37:10 (#59459)

Re: Автоматизация программирования Re: рут ина

>> Может, кто-нибудь занимался автоматизацией программирования. Я вот, например,
>> видел в одном проекте автоматическую генерацию классов-оберток для БД. Может
>> у кого есть сходный опыт?
>В одном? Хе-хе :) Сходите на apache и посмотрите проекты - приятно
>удивитесь, тут вам и Torque, и Ant и еще куча полезных шняжек.

Спасибо Вам, Partyzan, за ссылку. Вспомнил по ходу, что в известном мне проекте
как раз Ant использовался. Значит что-то в этом есть ;) Будем изучать.

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

   2004-01-20 18:31:38 (#59449)

RPM

Опции сборки пакетов

Общая форма команды построения пакета RPM выглядит так:

rpm -bo [опции-сборки] <sрес_файл>

ИЛИ

rpm -bo [опции-сборки] <arc_файл>

Аргумент -b применяется в том случае, если для сборки пакета используется
sрес-файл. Если же команда rpm должна извлечь этот файл из архива qzip,
используется аргумент -t. После первого аргумента ставится следующий: о,
указывающий, какие этапы сборки и упаковки должны быть выполнены.
Это один из:

-bр -- исполнить стадию %рrер sрес-файла. Обычно это включает в себя
распаковку исходного кода и прикладывание к нему патчей (от
англ. patch -- патч, заплатка, исправление);

-bl -- произвести проверку списка. В секции %files sрес-файла произ-
водится расширение макросов и проверка перечисленных файлов на су-
ществование;

-bc -- исполнить стадию %build sрес-файла (предварительно исполнив
стадию %prер). Обычно это сводится к исполнению некого эквивалента

make;

bi-- исполнить стадию %install sрес-файла (предварительно исполнив
стадии %рrер и %build). Обычно это сводится к исполнению некого эк-
вивалента make install;

-bb -- собрать бинарный пакет (предварительно исполнив стадии %рrер,

%build и %install);

-bs -- собрать только исходный пакет (предварительно исполнив стадии

%рrер, %build и %install);

-ba -- собрать бинарный (RPM) и исходный (SRРМ) пакеты (предва-
рительно исполнив стадии %prер, %build и %install).

Также могут быть использованы следующие опции:

-short-circuit -- исполнить непосредственно указанную стадию, про-
пустив предшествующие. Может быть использована только с -bc и -bi;

-timecheck -- установить возраст для timecheck(0 -- чтобы запретить).
Это значение также может быть установлено путем определения макроса
_timecheck_. Значение timecheck определяет максимальный возраст (в
секундах) пакуемых в пакет файлов. Для всех файлов, которые старше
этого возраста, будет выводиться предупреждение;

clean -- удалить дерево, использованное для сборки, после того, как
построены пакеты;

-rmsource -- удалить исходный код и sрес-файл после сборки (может
быть использовано отдельно, например, rpm -rmsource foo.spec);

-test -- не исполнять никаких стадий сборки. Полезно для тестирования
sрес-файлов;

-sign -- встроить в пакет PGP-ПОДПИСЬ. Эта подпись может быть ис-
пользована для проверки целостности и источника происхождения паке-
та;

-builroot <каталог> -- использовать каталог <каталог> как корневой
для сборки пакетов;

-target <платформа> -- при сборке пакета интерпретировать
<платформа> как arch-vendor-os и соответственно установить макросы

_target, _target_arch и _target_os.
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   bbuilder 2004-01-20 18:30:29 (#59446)

Re: Console!!! DONE!!!!

Hello Velora,

V> Все! Нашел!!!!
V> Ура!!!!
V> Спасибо все равно....

V> Объясните пожалуйста, что за тип WORD?

WORD - это 16-bit unsigned integer.
Остальное ищи в MSDN - "Integer data type, C++ data types"

Best regards,
KS mailto:andrei_am1***@m*****.ru
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   KS 2004-01-20 18:02:57 (#59418)

Re: Console!!! HELP!!!!

Hello Velora,

V> Привет всем!!!

V> Ребята погибаю!!!
V> Если я в консоле(С++.NET) установил:
V> ::SetConsoleTextAttribute(h, BACKGROUND_RED | BACKGROUND_INTENSITY);
V> Как ее отменить???
V> А то я пользуюсь потом system("cls"), и вес экран заливает красным?
V> Работа просто стала, я роюсь где есть, пробую что можно, но пока ничего...
V> Пожалуйста помогите!!!

Лично я делаю так:
SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE
| FOREGROUND_INTENSITY);

Best regards,
KS mailto:andrei_am1***@m*****.ru
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   KS 2004-01-20 17:41:46 (#59405)

Re: рутина

Hello, Евгений !
В теме "рутина" вы написали следующее:

Е> Меня уже давно мучает такой, немного философский, вопрос:
Е> почему программирование называю творческой профессией, а на самом деле в ней
Е> столько рутины, что иногда становится просто тошно? Ну, например, хочу сделать
Е> маленькую базку на php.
Я считаю, что это вообще одна из самых творческих профессий. Рутина -
это когда делаешь одно и то же одним и тем же макаром.
А творчество - это когда можно извернуться, что-нибудь придумать
новое, какую-нибудь фичу залепить в свою программу...

Ну и конечно творческое мышление и фантазия проявляется в
"поздравлениях" шефу, зашифрованных в комментариях в коде программы.
:)

   2004-01-20 17:40:05 (#59399)

Console!!! DONE!!!!

Все! Нашел!!!!
Ура!!!!
Спасибо все равно....

Объясните пожалуйста, что за тип WORD?

Velora
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   2004-01-20 17:28:48 (#59387)
  • 1
  • 2