LINUX.ORG.RU

Объекты провалились


0

0

Опубликован перевод статьи Ричарда П. Гэбриэла, в которой автор наглядно демонстрирует нежизнеспособность парадигмы объектно-ориентированного программирования в ее теперешнем виде, в частности на примере ее воплощения в Java. Будущее -- за новыми идеями (или хорошо забытыми старыми).

За перевод спасибо Александру Майбороде ака HandleX.

>>> Подробности

anonymous

Проверено: ivlad ()

Ответ на: комментарий от anonymous

> Вот настоящее скрытие реализации и не надо гнать!

Это больше полиморфизм, скрытие реализации это design by contract, т.е. важна истинность (пре|пост)-условий методов, а не сама реализация

anonymous
()
Ответ на: комментарий от anonymous

> Возьмем к примеру простую задачу: каждый день к обеду нужны батон и пакет кефира (Шурик, мы тебя не забудем!).

неужели вы думаете, я весь алгоритм буду описывать одним блоком (процедурой, методом)? я разобью весь алгоритм на элементарные действия (купить_молоко, купить_батон, дойти_из_дома_в_магазин, etc). таким образом, для реализации дополнительного действия (сложного) я не буду переписывать все заново, а буду использовать уже готовые элементарные. абсолютно также дело и для make обстоит. мы описываем элементарные действия, после чего реализация более сложных у нас происходят последовательным вызовом элементарных. короче разделяй и властвуй.

anonymous
()
Ответ на: комментарий от atrus

>> "В будущих системах ненадёжность (многих компонентов в целом) станет обычной, сложность выйдет за пределы поля зрения, и строить системы на тщательно "вылизанном" коде станет нереально."

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

>Короче, старая песня о главном - проги писать он не умеет, но готов переложить ответсвенность за свои глюки на кого угодно, в том числе и на ООП. Блин! Плохому танцору...

Видите-ли, atrus, жизнь - она такая, что работать приходится не только и не столько со своим кодом. И отдуваться приходится чаще за другого парня, чем за себя. Это называется "коллективная разработка", а коллектив он эта, неоднородный. Как подумаешь о том, что придётся ковырять творение одизной личности на Це-плюс-плюс, аж страшно становится. И эта, не надо петь про то, что де идиотов нада уволить. Скорее тебя уволят, если будешь слишком недоволен. Программистов щас как грязи, только свистни. Сменас места работы, как показывает практика, реально ничего не меняет. Коллективы профессионалов - это, очевидно, в раю. В жизни всё нескольео иначе.

lenin
()
Ответ на: комментарий от anonymous

>я разобью весь алгоритм на элементарные действия (купить_молоко, купить_батон, дойти_из_дома_в_магазин, etc)

Может правильнее купить_чтото и пару объектов молоко:паблик чтото и батон:паблик чтото ???

А то потом рефакторить тяжело когда такие проги нарождаются

zZzZ
()
Ответ на: комментарий от anonymous


Почитайте вот это и прослезитесь: http://www.forth.org.ru/~cactus/files/brodie.rar :)

> Возьмем к примеру простую задачу: каждый день к обеду нужны батон и пакет кефира (Шурик, мы тебя не забудем!). В императивном стиле мы пишем алгоритм для того чтобы выйти с работы (встать, повернутся на 180о, пройти 15 шагов, повернуться на 270о, открыть дверь,...), купить батон, купить кефир, вернутся на работу. Все работает отлично, пока ничего не меняется. Но пускай батон у нас уже есть и нам нужен только кефир - но алгоритмом ето не предусмотрено. Или мы уже стоим в магазине - тогда нам нужно вернутся в исходное положение, на работу, иначе алгоритм не сработает. Или нам нужно купить батон и ити домой - тогда нам полностю нужен новый алгоритм.

переменная батон
переменная кефир
очередь продукты
очередь в-наличии
очередь потребности
очередь маршрут
место откуда
место куда
место где-я-был
место магазин
место работа
место рабочий-стол
место домой
граф местность

: тогда if ; ( условно, без учёта immediate )
: иначе else ;
: далее then ;
: правда true ;
: ложь false ;
: нет not ;
: и and ;
: или or ;
: условие begin ;
: повторять while ;
: достаточно repeat ;

: где-я-сейчас местность проанализировать ;
( а можно запоминать перемещения и координаты )

: запомнить добавить-в-очередь ;

батон продукты запомнить
кефир продукты запомнить

: ничего-не-надо потребности очистить-очередь ;
: ничего-нет в-наличии очистить-очередь ;
: нужен потребности запомнить ;
: проверить разница-очередей ;
: что-то-нужно? продукты в-наличии проверить потребности запомнить ;
: сходить-в-магазин? потребности пуста-ли-очередь? ;

: место-достигнуто? откуда куда место-сравнить ;
: отсюда откуда место-запомнить ;
: туда куда место-запомнить ;
: поиск-куда ... ;
: найти-куда-идти условие место-достигнуто? нет? повторять откуда куда поиск-куда dup отсюда маршрут запомнить достаточно ; ( куда откуда -- )
: проложить-маршрут туда где-я-сейчас отсюда найти-куда-идти ; ( место1 место2 -- )
: пройти маршрут извлечь-из-очереди двигаться ; ( очередь -- )
: идти где-я-сейчас проложить-маршрут маршрут пройти ; ( место -- )

: сходить-в-магазин сходить-в-магазин? тогда магазин идти потребности купить далее ;
: на-работу работа идти ;
: накрыть-на-стол что-то-нужно? сходить-в-магазин на-работу продукты рабочий-стол выложить ;
: обед накрыть-на-стол кушать ;

батон в-наличии запомнить
обед

ничего-нет ничего-не-надо
батон нужен сходить-в-магазин домой идти

---
После двоеточия имя функции (ограничено пробелами), далее тело, заканчивается точкой-с-запятой. Вызов функции ограничен пробелами.

Писалось на скорую руку (сильно не пинайте :). Проблемный язык. Итерактивный. Желательно, ещё упростить, перемещения неудачные.

P.S. Только жаль, что сложноват Forth "для леммингов". :)

:-)

anonymous
()
Ответ на: комментарий от int19h

>Дык я больше скажу - древнего басика, с его единственной конструкцией IF cond THEN label хватает. А еще вполне можно передвигаться исключительно пешком, жарить еду на костре, и жить в пещере. Вот щасте-то...

..."уважаемый" int19h уже овладел левuтацuей?..

anonymous
()
Ответ на: комментарий от anonymous

про Шурика батон и кефир:-)

Я так думаю, что тут некоторые сгущают краску.

Прозвучала интересная мысль на счёт того, что если вдруг кефира или
хлеба окажется достаточно, то Шурик не должен покупать тот или иной
продукт в зависимости от условий. Иначе придётся перелопачивать весь алгоритм.
Кто-то всерьёз предлагает поменять в коде строчку...
Кто-то лисп-подобно описал процесс. Я вот тут подумал, что Шурик
время от времени посылается в магазин и покупает там кфир и хлеб
(doBuyKefir(); doBuyHleb();)
Мне сначала подумалось, что надобно ввести метод checkStorage(Product p); которая выполняется каждый раз, когда Шурику предстоит купить то или это.

Результатом такого подхода будет вот что.
Раз в n-ное кол-во времени Шурик выполняет
doGoShop() {
doBuyKefir();
doBuyHleb();
}

В телах этих функций выполняется checkStorage, проверяющий
наличие оных вещей в холодильнике.
Интерфейс упрощается... Но!
Если поступить так:

Когда уровень содержания хлеба или кефира в холодильнике
становится ниже критического, то создаётся EVENT, вызывающий
doGoShop с параметром Productist pl.

Мне кажется, проблема не в языке, а в способе реализации.
А как Вы думаете? :)

solom
()
Ответ на: комментарий от anonymous

>Мусор руками только приплюснутые собирают %)

Мусор руками только ламеры собирают.

А приплюснутые используют смарт поинтеры %)

Sveta_F
()
Ответ на: комментарий от lenin

> Как подумаешь о том, что придётся ковырять творение одизной личности на Це-плюс-плюс, аж страшно становится.

Тогда пусть так честно и говорит. Мол, C++ - паршивый язык. Или объекты в C++ реализованы хуже некуда. Он-то собственно что предлагает? Откатится от объектов и искать новое? ОК, но если мы откатываемся назад, я немедленно достаю статейку "Настоящие программисты не используют паскаль", в которой автор так же громит и клеймит, предлагая откатиться на ассемблер. И до куда мы дойдём? До перфокарт?

atrus ★★★★★
()
Ответ на: комментарий от atrus

>ОК, но если мы откатываемся назад, я немедленно достаю статейку "Настоящие программисты не используют паскаль", в которой автор так же громит и клеймит, предлагая откатиться на ассемблер. И до куда мы дойдём? До перфокарт?

про паскаль" - это стеб, если что.

MOByte
()
Ответ на: комментарий от MOByte

> про паскаль" - это стеб, если что.

Конечно стёб. Но откуда он взялся? А я скажу - он написан в ответ на непрекращавшийся тогда вой и нытьё на тему, что вот, все подсели на структурное программирование, что готу не используй теперь и т.д. В то время, как только ассемблер позволяет раскрыть истинные... Ну и т.д.

В общем, эта песня _будет_ звучать вечно. Даже если не менять батареек... ;-)

atrus ★★★★★
()

Ну... автор статьи слишком уж увлекся философией Куна про научные революции, парадигмы и проч (будь этот экзамен по философии не ладен!). Опыт показывает, что даже имеющиеся общепринятые языки программирования имеют тенденцию мутировать. вон, посмотрите, например, что стало с Паскалем и Бейсиком в исполнении Борланда и Микрософта! -- взяли что-то что тысячи начинающих программистов учили в школе, и изменили слегка, чтобы оно отвечало нуждам индустрии.

скоро точно таким-же методом будет не узнать и Яву.

а про C++ я и не говорю. в сочетании с QT это вообще превращается в другой язык программирования с другой философией.

в общем -- статья -- гонево :-)

svSHiFT
()

На сайте автора есть и другие интересные статьи. Например, "Lisp: Good News, Bad News, How to Win Big" - http://dreamsongs.com/WIB.html

Цитаты из неё ( статья написана в 1991 году) :

...

The key problem with Lisp today stems from the tension between two opposing software philosophies. The two philosophies are called The Right Thing and Worse is Better.

...

Unix and C are the ultimate computer viruses.

...

The good news is that in 1995 we will have a good operating system and programming language; the bad news is that they will be Unix and C++.

....

Рекомендую !

Ono
()
Ответ на: комментарий от svSHiFT

Не надо упоминать бейсик. Не на до! А то я обижусь и запощу сюда одну маленькую (~100 строк) програмку на бейсике, которую меня попросили переделать. Лор многое пережил, но от такого кошмара он сдохнет нафиг. И где вы флеймить будете?

P.S. А прога на форте -- это ваще рулез :)

ugoday ★★★★★
()
Ответ на: комментарий от lenin

Дизайнеров все больше, а мир все уродливее (с) Jazzuit. Проджект-менеджер должен быть грамотный. Или уважаемые считают, что код на лиспе или смолтолке всегда четабелен? Не верю!

Shaman007 ★★★★★
()

Тупая статья, шаман прав. Человек излагает такие обстоятельства, из которых как раз следует польза ООП - слабая связность программ, немонолитность и так далее.

То есть рассказывает он правильные вещи, а вывод делает как раз противоположный.

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

anonymous
()
Ответ на: комментарий от anonymous

Ребята, пошли вы все вместе с автором этой статейки НА ХЕР!!!!!!!!!!!! Ни вас ни его как програмера никто не знает, хоть вы обосритесь тут. Назовите свои программы, КОЗЛЫ!!!!!!!!!!!

ДЕТСКИЙ САД, ЯСЕЛЬНАЯ ГРУППА!!!!!!!!!!!!!

СБОРИЩЕ ДОЛБОЕБОВ!!!!!!!!!!!!!!!

КРУТОЙ ПРОГРАММЕР.

anonymous
()
Ответ на: комментарий от anonymous

>Объекты не только не провалились, а развиваются сверх резвыми темпами, автор вероятно никогда не слышал о MDA/MDD.

Никто, кроме тебя, не слыхал о таком. Расскажи о MDA/MDD

Сказали, что Ruby рулит, надо фсем переучиться. Японский язык, все же, японцы плохому не научат

anonymous
()
Ответ на: комментарий от Shaman007

Сотрите кто-нибудь комменты Shaman007, он этим идиотским словом "ЧЕТАБЕЛЕН" доводит русскоязычных до белого каления.

Shaman007, или пиши на udaff.com, или пиши "ЧИТАЕМ(ЫЙ)".

anonymous
()

Сользкий тип этот Габриел, и помоему немного двуличный.

http://weblogs.java.net/pub/wlg/28


оттуда
---

I’m Dick Gabriel, a computer scientist at Sun. I’ve been working in and around programming languages since 1975 and around objects since 1984 or so. These days I’m active in OO conferences and software patterns, and most of my blogs will be about those.

But the first time around I wanted give you my perspective on Java. Most importantly - and somewhat paradoxically - I had nothing to do with Java and still don’t. My predilections as far as languages are concerned are toward the more exotic and paradigm shifting.

ifconfig
()
Ответ на: комментарий от Shaman007

Shaman007, садись. ДВА!

able всё-таки суффикс!

А вот, что означает слова "ЧЕТА" в твоём понимании?

anonymous
()
Ответ на: комментарий от Shaman007

Shaman007, пошёл отсюда, двоечник!

anonymous
()
Ответ на: комментарий от Shaman007

Блядь, пошли на хер, мудачье!!!!!!!!!!!! Перенесите свой детский лепет на аську и не засирайте сервер!!!!!!!!1

anonymous
()

1. Это никакая не новость. Подобных статей по сети - килограммы. Ничего нового он не сказал. Всего лишь присоединил свой голос к сонму подобных себе нытиков. 2. Для обозначения этого шедевра есть хороший термин - СЛОВОБЛУДИЕ.

gpg
()

Т.е. даже на СПЕКУЛЯЦИЮ не тянет.

gpg
()
Ответ на: комментарий от anonymous

А что, постить идиотские комменты теперь только анонимным пользователям можно?

Shaman007 ★★★★★
()
Ответ на: комментарий от R00T

CLS
OPEN "SERG1.TXT" FOR OUTPUT AS #1
ritm=0: Mst=0: Mdv=0:Mtr=0
DIM h(30), v(30), tau(30, l(30), e(30), t(30), p(30), m(30), n(30)
TAUP=2: tn=980: V0=2
h=160: b=1000: l=1500
h(1)=150: h(12)=33
h(2)=140: h(13)=28    'Расходный коэффициент 1.25'
h(4)=103: h(15)=20.5
h(5)=88: h(16)=17.5
h(6)=75: h(17)=15
h(7)=65: h(18)=13
h(8)=57: h(19)=11.5
h(9)=50: h(20)=10.7
h(10)=45: h(21)=10
h(11)=40:

'tn=(1000/((1E+09/(tn+273)^3)+.055*(59.155/1.7)/h)^(1/3))-273
'tn=tn - 500/(h*1.7)
n=21: h(0)=h: l(0)=l: t(0)=tn
PRINT
PRINT #1, " N H0 H1 dH E alfa B L Tau T P Перегруз Мпр Мхх Мтр Мдв N"
PRINT #1, " np mm mm mm % ' mm mm c 'C MH % kH m kH m kH m kH m kBm"
PRINT
FOR i=1 TO n
IF i=3 THEN K=b: b=l(2); l(2)=K: t(i-1) - 500/(h + v(i))
IF i<>12 THEN t=0
IF i=12 THEN t(i-1)=(1000/((1E+09/(t(i-1)+273)^3)+.055*(37.88/3)/h(i)))^(1/3)) - 273: PRINT #1, USING" ##.# ####"; 37.88/3;t(i-1)
IF i<12 THEN r=535 ELSE r=375
IF i<12 THEN v(i)=1.2 ELSE v(i)=2.2
GOSUB 1
NEXT i
IF ritm1 > ritm2 THEN ritm11 = ritm1+5' ritm22=ritm1
IF ritm2 > ritm1 THEN ritm11 =ritm2+5'ritm11 = ritm2
Mst1 = SQR(Mkv1 /ritm11)
Mst2 = SQR(Mkv2 /ritm11)
PRINT #1,
PRINT #1, "Время прокатки в черновой клети"; :PRINT #1, USING "###.# секунд "; ritm1
PRINT #1, "Статический момент на валу двигателя черновой клети"; :PRINT #1, USING "####.# kH m"; Mst1
PRINT #1,
PRINT #1, "Время прокатки в чистовой клети"; :PRINT #1, USING "###.# секунд"; ritm2
PRINT #1, "Статический момент на валу двигателя чистовой клети"; :PRINT #1, USING "####.# kH m"; Mst2
PRINT #1,
PRINT #1, "Ритм прокатки составляет"; :PRINT #1, USING "###.# секунд"; ritm11
PRINT #1,
PRINT #1, "Производительность стана"; :PRINT #1, USING "###.# тонн/час" 3600 * h *b * l * 7.85/(ritm11 * 1E+09)
END
FOR i=2 TO 77
LOCATE 1, i: PRINT "="
LOCATE 4, i: PRINT "="
Locate n+6, i: PRINT "="
NEXT i
FOR i=2 TO n+5
LOCATE i, 2: PRINT "|"
LOCATE 1, 2: PRINT "r"

LOCATE n+6, 2: PRINT "L"
FOR u=1 TO 13
LOCATE 1,6*u: PRINT "T"
LOCATE n+6, 6*u: PRINT "|"
LOCATE i, 6*u: PRINT "|"
LOCATE 4,6*u: PRINT "+"
NEXT u
LOCATE 1, 78: PRINT "-"
LOCATE n+6, 78: PRINT "-"
LOCATE 4, 78: PRINT "|"
LOCATE 4, 2: PRINT "|"
NEXT i
END
1 'Расчёт времени прохода
IF i=12 THEN 45
IF i>1 THEN 3 ELSE 2
2 tau(1)=(l/(2*V0)+(h*l)/(2*h(1)*v(1)))/1000 + TAUP
l(i)=h(i-1)*l(i-1)/h(i): e(i)=(h(i-1) - h(i))/h(i-1)
GOTO 4
45 tau(12)=(l(11)/(2*3)+(h(11)*l(11))/(2*h(12)*v(12)))/1000 + TAUP
l(i)=h(i-1)*l(i-1)/h(i): e(i)=(h(i-1) - h(i))/h(i-1)
GOTO 4
3 l(i)=h(i-1)*l(i-1)/h(i): e(i)=(h(i-1) - h(i))/h(i-1)
tau(i)=((h(i-2)*l(i-2)/1000)/(2*h(i-1)*v(i-1))+ (h(i-1)*l(i-1))/(2*h(i)*l(i))) + TAUP
4 t(i)=(1000/((1E+09/(t(i-1)+273)^3)+.055*tau(i)/ h(i-1))^(1/3))-273-t
IF i>11 THEN t(i)=t(i)-.73*t(i-1)/h(i)*(1+v(i)*h(i)/h(i-1)))
'Расчёт усилий
IF e(i)=0 THEN 5
EH = v(i)*e(i)*1000/SQR(r*e(i)*h(i-1))
S=1!: SIGMA0=85.4: a=.126: B1=.218: C=-4.538
SIGMA=S*SIGMA0*EH^a*(e(i)*10)^B1*(t(i)/1000?^C
x=.0.0045*PSR: Ld=SQR(r*e(i)*h(i-1)+x^2) + x: Hsr = (h(i-1)+h(i))/2: hl=Ld/Hsr
IF hl>4 THEN NSIGMA=1+hl/4: GOTO 10
IF hl<2 THEN NSIGMA=1+hl/6: GOTO 10
HN = SQR(h(i)*h(i-1)): MU=.8*(1-.0005*t(i)): o=2
DELTA=(2*MU*SQR(r*e(i)*h(i-1)))/(e(i)*h(i-1))
HN1 = ((1 + SQR(1 + (DELTA^2-1)*(h(i-1)/h(i))^DELTA))/(DELTA+1))^(1/DELTA)
NSIGMA=2*HN*(HN1^DELTA-1)/(e(i)*h(i-1)*(DELTA -1))
10 PSR=1.15*SIGMA*NSIGMA
p(i)=PSR*b*Ld/1000000
m(i)=.5*p(i)*Ld/1000
IF i>11 THEN m(i)=m(i)*2
n(i)=(m(i)8v(i)*1000/r)/(.97^3)
5 IF i<12 THEN ritm1=ritm1 + tau(i): ftr=0.015: dsh=690
IF i>=12 THEN ritm2=ritm2+tau(i): ftr=0.003: dsh=480
IF i>=12 THEN Mxx=35.3 eLSE Mxx=32.8
Mtr=p(i)*ftr*dsh
Mdv=((m(i)*1000+Mtr)/.91)+Mxx
IF e(i)=0 THEN Mdv=Mxx
IF i<12 THEN Mkv1=Mkv1 + Mdv^2 *(tau(i)-2): zagr=p(i)/24.5
IF i>=12 THEN Mkv2=Mkv2 + Mdv^2*(tau(i)-2): zagr=p(i)/31.4
IF e(i) <> 0 THEN PRINT #1, USING " ## ###.# ###.# ##.# ##.# ##.# #### ##### ##.# #### ##.# ### #### ##.# ###.# ###.# #####"; i; h(i-1);h(i);h(i-1)-h(i); e(i)*100; SQR(e(i)*h(i-1)/r)*180/3.14; b; l(i); tau(i)_
;t(i);p(i);zagr*100; m(i)*1000; Mxx; Mtr; Mdv; n(i)*1000
IF e(i) = 0 THEN PRINT #1, USING " ##-------------##.#--####-----------";i;tau(i);t(i)
RETURN

ugoday ★★★★★
()
Ответ на: комментарий от R00T

Стране нужен метан!

CLS
OPEN "SERG1.TXT" FOR OUTPUT AS #1
ritm=0: Mst=0: Mdv=0:Mtr=0
DIM h(30), v(30), tau(30, l(30), e(30), t(30), p(30), m(30), n(30)
TAUP=2: tn=980: V0=2
h=160: b=1000: l=1500
h(1)=150: h(12)=33
h(2)=140: h(13)=28    'Расходный коэффициент 1.25'
h(4)=103: h(15)=20.5
h(5)=88: h(16)=17.5
h(6)=75: h(17)=15
h(7)=65: h(18)=13
h(8)=57: h(19)=11.5
h(9)=50: h(20)=10.7
h(10)=45: h(21)=10
h(11)=40:

'tn=(1000/((1E+09/(tn+273)^3)+.055*(59.155/1.7)/h)^(1/3))-273
'tn=tn - 500/(h*1.7)
n=21: h(0)=h: l(0)=l: t(0)=tn
PRINT
PRINT #1, " N H0 H1 dH E alfa B L Tau T P Перегруз Мпр Мхх Мтр Мдв N"
PRINT #1, " np mm mm mm % ' mm mm c 'C MH % kH m kH m kH m kH m kBm"
PRINT
FOR i=1 TO n
IF i=3 THEN K=b: b=l(2); l(2)=K: t(i-1) - 500/(h + v(i))
IF i<>12 THEN t=0
IF i=12 THEN t(i-1)=(1000/((1E+09/(t(i-1)+273)^3)+.055*(37.88/3)/h(i)))^(1/3)) - 273: PRINT #1, USING" ##.# ####"; 37.88/3;t(i-1)
IF i<12 THEN r=535 ELSE r=375
IF i<12 THEN v(i)=1.2 ELSE v(i)=2.2
GOSUB 1
NEXT i
IF ritm1 > ritm2 THEN ritm11 = ritm1+5' ritm22=ritm1
IF ritm2 > ritm1 THEN ritm11 =ritm2+5'ritm11 = ritm2
Mst1 = SQR(Mkv1 /ritm11)
Mst2 = SQR(Mkv2 /ritm11)
PRINT #1,
PRINT #1, "Время прокатки в черновой клети"; :PRINT #1, USING "###.# секунд "; ritm1
PRINT #1, "Статический момент на валу двигателя черновой клети"; :PRINT #1, USING "####.# kH m"; Mst1
PRINT #1,
PRINT #1, "Время прокатки в чистовой клети"; :PRINT #1, USING "###.# секунд"; ritm2
PRINT #1, "Статический момент на валу двигателя чистовой клети"; :PRINT #1, USING "####.# kH m"; Mst2
PRINT #1,
PRINT #1, "Ритм прокатки составляет"; :PRINT #1, USING "###.# секунд"; ritm11
PRINT #1,
PRINT #1, "Производительность стана"; :PRINT #1, USING "###.# тонн/час" 3600 * h *b * l * 7.85/(ritm11 * 1E+09)
END
FOR i=2 TO 77
LOCATE 1, i: PRINT "="
LOCATE 4, i: PRINT "="
Locate n+6, i: PRINT "="
NEXT i
FOR i=2 TO n+5
LOCATE i, 2: PRINT "|"
LOCATE 1, 2: PRINT "r"

LOCATE n+6, 2: PRINT "L"
FOR u=1 TO 13
LOCATE 1,6*u: PRINT "T"
LOCATE n+6, 6*u: PRINT "|"
LOCATE i, 6*u: PRINT "|"
LOCATE 4,6*u: PRINT "+"
NEXT u
LOCATE 1, 78: PRINT "-"
LOCATE n+6, 78: PRINT "-"
LOCATE 4, 78: PRINT "|"
LOCATE 4, 2: PRINT "|"
NEXT i
END
1 'Расчёт времени прохода
IF i=12 THEN 45
IF i>1 THEN 3 ELSE 2
2 tau(1)=(l/(2*V0)+(h*l)/(2*h(1)*v(1)))/1000 + TAUP
l(i)=h(i-1)*l(i-1)/h(i): e(i)=(h(i-1) - h(i))/h(i-1)
GOTO 4
45 tau(12)=(l(11)/(2*3)+(h(11)*l(11))/(2*h(12)*v(12)))/1000 + TAUP
l(i)=h(i-1)*l(i-1)/h(i): e(i)=(h(i-1) - h(i))/h(i-1)
GOTO 4
3 l(i)=h(i-1)*l(i-1)/h(i): e(i)=(h(i-1) - h(i))/h(i-1)
tau(i)=((h(i-2)*l(i-2)/1000)/(2*h(i-1)*v(i-1))+ (h(i-1)*l(i-1))/(2*h(i)*l(i))) + TAUP
4 t(i)=(1000/((1E+09/(t(i-1)+273)^3)+.055*tau(i)/ h(i-1))^(1/3))-273-t
IF i>11 THEN t(i)=t(i)-.73*t(i-1)/h(i)*(1+v(i)*h(i)/h(i-1)))
'Расчёт усилий
IF e(i)=0 THEN 5
EH = v(i)*e(i)*1000/SQR(r*e(i)*h(i-1))
S=1!: SIGMA0=85.4: a=.126: B1=.218: C=-4.538
SIGMA=S*SIGMA0*EH^a*(e(i)*10)^B1*(t(i)/1000?^C
x=.0.0045*PSR: Ld=SQR(r*e(i)*h(i-1)+x^2) + x: Hsr = (h(i-1)+h(i))/2: hl=Ld/Hsr
IF hl>4 THEN NSIGMA=1+hl/4: GOTO 10
IF hl<2 THEN NSIGMA=1+hl/6: GOTO 10
HN = SQR(h(i)*h(i-1)): MU=.8*(1-.0005*t(i)): o=2
DELTA=(2*MU*SQR(r*e(i)*h(i-1)))/(e(i)*h(i-1))
HN1 = ((1 + SQR(1 + (DELTA^2-1)*(h(i-1)/h(i))^DELTA))/(DELTA+1))^(1/DELTA)
NSIGMA=2*HN*(HN1^DELTA-1)/(e(i)*h(i-1)*(DELTA -1))
10 PSR=1.15*SIGMA*NSIGMA
p(i)=PSR*b*Ld/1000000
m(i)=.5*p(i)*Ld/1000
IF i>11 THEN m(i)=m(i)*2
n(i)=(m(i)8v(i)*1000/r)/(.97^3)
5 IF i<12 THEN ritm1=ritm1 + tau(i): ftr=0.015: dsh=690
IF i>=12 THEN ritm2=ritm2+tau(i): ftr=0.003: dsh=480
IF i>=12 THEN Mxx=35.3 eLSE Mxx=32.8
Mtr=p(i)*ftr*dsh
Mdv=((m(i)*1000+Mtr)/.91)+Mxx
IF e(i)=0 THEN Mdv=Mxx
IF i<12 THEN Mkv1=Mkv1 + Mdv^2 *(tau(i)-2): zagr=p(i)/24.5
IF i>=12 THEN Mkv2=Mkv2 + Mdv^2*(tau(i)-2): zagr=p(i)/31.4
IF e(i) <> 0 THEN PRINT #1, USING " ## ###.# ###.# ##.# ##.# ##.# #### ##### ##.# #### ##.# ### #### ##.# ###.# ###.# #####"; i; h(i-1);h(i);h(i-1)-h(i); e(i)*100; SQR(e(i)*h(i-1)/r)*180/3.14; b; l(i); tau(i)_
;t(i);p(i);zagr*100; m(i)*1000; Mxx; Mtr; Mdv; n(i)*1000
IF e(i) = 0 THEN PRINT #1, USING " ##-------------##.#--####-----------";i;tau(i);t(i)
RETURN

ugoday ★★★★★
()
Ответ на: Стране нужен метан! от ugoday

Замеченные синтаксические ошибки посылайте сюда. Рекомендации по улучшению алгоритма также приветствуются.

ugoday ★★★★★
()

я думаю статья хорошая и располагает к размышлению :) Действительно, ООП это хорошо. Но всё, на что оно способно уже создано и идет счет на гигагерцы, которые смогут нормально провернуть эти тонны кода. Нужна иная концепция построения, и нужно отойти как-то от этих нолей и еденичек, нужно научить компьютер распозновать более двух состояний (true/false). Вот тогда начнется новая эра :)

anonymous
()
Ответ на: комментарий от anonymous

> Нужна иная концепция построения, и нужно отойти как-то от этих нолей и еденичек, нужно научить компьютер распозновать более двух состояний (true/false). Вот тогда начнется новая эра :)

В поисковик запросы: нечёткая логика, квантовые компьютеры. Последние пока существуют лишь в виде эмуляторов.

atrus ★★★★★
()
Ответ на: комментарий от anonymous

> Нужна иная концепция построения, и нужно отойти как-то от этих нолей и еденичек, нужно научить компьютер распозновать более двух состояний (true/false)

C:\>format c:

Вы точно хотите сформатировать жесткий диск?

1. Ну, не знаю...

2. Да... наверное...

3. Не хочется, но надо

4. Сдохни, сволочь!!!

5. Как-то не тянет

6. Ладно, живи... пока

7. ТЫ @%#%^ @%# УЖЕ @%$%^ ДОСТАЛО СВОИМИ $^@% ВОПРОСАМИ!!!

int19h ★★★★
()
Ответ на: комментарий от int19h

ну зачем-же так иронизировать? :) Это четкий вопрос, подразумевающий четкий ответ. Пользователь ввел команду, система хочет знать, ошибся он или нет... Приведенные варианты ответов здесь просто неуместны имхо.

Есть ведь вопросы на которые вы можете дать четкий (да/нет) ответ:
Ты девственник? :)

А есть, где можно вставить промежуточные ответы:
Завтра будет хорошая погда? да/скорее да, чем нет/не знаю/скорее нет, чем да/нет. И ответ ты будешь давать на основе анализа текущей погоды и (возможно) фотографий со спутника.

Бредово, но ИМХО только тогда станет возможным создание полноценного AI.

anonymous
()
Ответ на: комментарий от int19h

А почему 7 вариантов? Добавил бы ещё однин, получилось бы круглое число. Кроме того машинка может предложить позвонить другу, спросить у зала и 50/50. ;)

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

>Ты девственник?

да/нет/а почему вы спрашиваете?

>А есть, где можно вставить промежуточные ответы: есть/слушаюсь/служу советскому союзу/ураааа.

>только тогда станет возможным создание полноценного AI.

Ах прелесть моя, давайте сначала создадим полноценный естесственный интеллект, а потом уж за искусственный возьмёмся.

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

atrus дал ананимусу наводку. Хватило на две поллитры. :-)

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

флеймить мы все умеем :)
А мозгами на что-то раскинуть куда уж нам, пусть профессора думает... им по профессии положено :-/

anonymous
()
Ответ на: комментарий от anonymous

К сожалению, разработка новой парадигмы программирования или процессорной архитектуры мне пока не по силам. Вот и остаётся шутки шутить, всё лучше чем пустые статьи писать. Кстати, если вы такой умный, лучше с программой помогите, вдруг там глюки есть? ;)

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

>Кстати, если вы такой умный, лучше с программой помогите,
>вдруг там глюки есть? ;)
Есть есть... лишние скобки, 8 вместо *
Может не здесь совета искать, а загрузить программу в кубасик и воспользоваться отладчиком гений вы наш :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.