Сквозняк писал(а):А с переводом не всё хорошо, часть его грохнули и всё подмяли под лазарус. Та справка в html формате, что идёт вместе с дистрибутивом исходников - вообще без перевода! А именно несколько её файлов открыты у меня в браузере почти постоянно. Также её можно открывать в fp-ide, но там хуже видно чем в браузере.
У меня опыта хватает что бы в справку не заглядывать. Обычно смотришь в коде, что нужно.
Сквозняк писал(а):И зачем для такой простой вещи подключать лазарус с другим диалектом паскаля и всё усложнять указателями и прочей хренью? Мой пример нормально работает при
Это потому, что Вы языка не знаете. Указатели в паскале были с самого первого момента его появления. И тут всё в рамках стандарта.
Сквозняк писал(а):А мой код должен принести _мне_ пользу и быть по возможности нереализуем другими программистами увидевшими конечный результат. Капитализм на дворе и сражение за миску супа. Кто проиграл, тот бомж и подыхает под мостом. Причём мой код нормально пишется и анализируется из консольки, в простой паскалевской ИДЕ, и не требует Rad студии. И какой из кодов тогда более токсичный?
Вы через полгода сами забудете, что там навояли и не разберётся.Rad студия создана для облегчения труда архитекторов, что бы те могли напрягать простых кодеров.
Сквозняк писал(а): Как ООП, так и несчастье - то из стека вылетишь, то память подтекает.
Вот вам и не качественный код. Стандарты по оформлению кода как раз и были придуманы для снижения ошибок. Я да же не помню когда у меня последний раз вылетал стек. У меня с ООП и качественным кодом память не протекает.
На коротких функция сразу видно, что -1 в for забыл дописать.
Сквозняк писал(а):Не знаю, что это за операторы, но про асинхронность вы сильно ошибаетесь. Давно уже сказано, что на паскале можно написать всё. А вот как это "всё" писать без гото и касе, данный мыслитель ничего не изрёк.
Это Вы просто не дочитали. Я же сказал кооперативная многозадачность. А пример есть у Вирта в его A2 (ОС Оберон)
Маленькая часть не должна уметь всего. Ну а количество параллельных времён там около десяти, так что даже и время там показать не такая простая задача. Говорю же, есть в паскале асинхронность, это в лазарусе её так сломали, что приходится кидать на форму элемент "будильник" - тимер
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
и прописывать в его обработчике кучу событий.
Ну это от того что народ не умеет правильно писать асинхронный код. Взять хотя бы Виндоус там приоритеты у нитей сделаны с таким переподвыпердом, что в двух словах и не опишешь. Там обычный спинлок вешает соседнию нить из общего потока! На Линуксе в Qt таже хрень только с сетевыми операциями. DeadLock прилетает из ядра. Зато идея когда у каждого объекта есть свой таймер просто супер!
Seenkao писал(а):Ну, и теперь, самое важное. Где мы не сможем не использовать оператор безусловного перехода? (конечно же всегда сможем, но как мы перед заказчиком отчитаемся, почему наша программа не работает должным образом?).
Если в голове бордак, то и в коде бордак. Для этого с начало и планируют чтобы такого не было.
Seenkao писал(а):онечно тебя будут держать, ведь ты умеешь писать красиво код. Подумаешь он полгода будет работать. А вот того, в очках "профессора" выкинут. Ну и что, что у него практически не вылетает код, но он там непонятные каракули рисует в коде и код через какие-то непонятные места работает, но вылетать не хочет. Пшёл он вон.
Не путайте божий дар с яишнейей. Это не профессора. Профессор должен уметь передать знания следующему поколению. Поэтому профессора пишут качественный код.
А вот это либо стажёры либо математики, от слов совсем не программисты такой говнокод делают. Правда я понял почему, потому что у них такой же дерьмище в ихних книжках. Третий заход, вторую неделю занимаюсь численными методами для решения уравнений. Авторы тупо копирую ошибки друг у друга.
Перевел с Алгола 3 процедуры из 2-х разных источников ни одна Карл не заработала! Слава богу перерыл 20 книг нашёл человеческое описание в 5-х книгах в 3 неполные описание либо с ошибками. В результате 2 книге которые дополняют друг друга.
- Код: Выделить всё
// Перевод кода из wilkinson1962 Householder's method for symmetric matrices
procedure Tridiagonalization_Householder0(A:TMatrix; var d,e:TVector);
var i,j,k:Integer;
n:Integer;
ai,sigma,h,bj,BigK,bi:Real;
b,q:TVector;
begin
n:=A.n;
SetLength(d,n);
SetLength(e,n);
b:=e;
SetLength(q,n-1);
for j:=0 to n-1 do
for i:=j+1 to n-1 do
a[j,i]:=0; {}
for i:=n-1 downto 2 do
begin
sigma:=0;
for k:=0 to i-2 do
sigma:=sigma+a[i,k]*a[i,k];
ai:=a[i,i-1];
// Выбираем стабильный знак.
if ai>=0 then bi:=-sqrt(sigma) else bi:=sqrt(sigma);
b[i-1]:=bi;
{ Если параметр sigma слишком мал, чтобы гарантировать
ортогональность, то преобразование Хаусхолдера не выполняется
и происходит переход к метке skip и выход из процедуры;}
if sigma <= Tol then
begin
e[i]:=sigma;
sigma:=0;
d[i]:=bi;
end else
begin
h:=sigma-ai*bi;
a[i,i-1]:=ai-bi;
for j:=i-2 downto 0 do
begin
bi:=0;
for k:=i-2 downto j do
bi:=bi+a[k,i]*a[i,k]; // Формирование вектора A*u
for k:=j-2 downto 0 do
bi:=bi+a[j,k]*a[k,j]; // формирование вектора p
q[j]:=bi/h;
end;
//Вычисление параметра K
BigK:=0;
for j:=i-2 downto 0 do
BigK:=BigK+a[i,j]*q[j];
BigK:=BigK/(2*h);
// формирование вектора q
for j:=i-2 downto 0 do
q[j]:=q[j]-BigK*a[i,j];
//Преобразование матрицы A
for j:=i-2 downto 0 do
begin
for k:=j-1 downto 0 do
a[j,k]:=a[j,k]-a[i,j]*q[k]-a[i,k]*q[j]
end;
end; // if
end; // i;
for i:=n-1 downto 0 do
d[i]:=a[i,i];
e[0]:=a[1,0];
e[n-1]:=0;
end;
Вот чего оно не работает? goto был убран. Так как на код влияет заполнение верхнего треугольника или там 0, то видимо индексы выходят за пределы главной диагонали. А ещё не понятно для умножения надо сохранить vk и uk, а сохраняется только одно? Или A[i,i]<>d[i]
jsa писал(а):Последний год, когда они в терминальном кабинете стояли, потом на факультете появилось аж 3 шт IBM PC/XT. то ли 286, то ли 386
Сейчас вообще обленились оптимизировать разработчики ИИ пишут код на питоне с парсером с алгаретмической сложностью О(3) и гоняют мегобайты текстовых данных. Если за 1 час укладывается, то норм. А если нет то тогда подключают либу на Си Которая ускоряет в 1 милион раз. И подают на вход гигабайты данных.