Re[12]: Где Борланд свернул не туда?
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.06.25 16:38
Оценка: 1 (1)
Здравствуйте, ononim, Вы писали:
O>так случилось что у меня нашелся делфи 6, и вот: http://files.rsdn.org/69464/delphi6_float.png
Да, код чуууточку получше, чем я помню по 1999му году. Научились применять стек в пределах одного выражения При этом вместо FLD ST(0)/FMUL, выполняется FMUL c memory location, что хуже по пропускной способности, несмотря на кэш.
Кстати, если вас не затруднит — можете скомпилировать вот такой вариант кода?
s := a*a;
s := t + b*b;
s := t + c*c;
s := Sqrt(s);
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Где Борланд свернул не туда?
От: novitk США  
Дата: 03.06.25 16:57
Оценка: :)
Здравствуйте, Kocur, Вы писали:

K>Помню 1998 год. Тогда процентов 80 (если не больше) знакомых писали на Delphi.

Сильно до. Когда купила им нафиг не нужный Ashton-Tate (1991).
Re[13]: Где Борланд свернул не туда?
От: ononim  
Дата: 03.06.25 17:25
Оценка: +1
S>Кстати, если вас не затруднит — можете скомпилировать вот такой вариант кода?
S>
S>s := a*a;
S>s := t + b*b;
S>s := t + c*c;
S>s := Sqrt(s); 
S>


мда...
http://files.rsdn.org/69464/delphi6_float2.png

мне кажется вот тут они это подкостылили: https://chuacw.ath.cx/development/b/chuacw/archive/2004/05/10/undocumented-delphi-8-compiler-directive-finitefloat.aspx
но 8го делфи вот под рукой нету
Как много веселых ребят, и все делают велосипед...
Отредактировано 03.06.2025 17:44 ononim . Предыдущая версия . Еще …
Отредактировано 03.06.2025 17:43 ononim . Предыдущая версия .
Re[13]: Где Борланд свернул не туда?
От: Sergei I. Gorelkin Россия  
Дата: 03.06.25 17:59
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, ononim, Вы писали:

O>>так случилось что у меня нашелся делфи 6, и вот: http://files.rsdn.org/69464/delphi6_float.png
S>Да, код чуууточку получше, чем я помню по 1999му году. Научились применять стек в пределах одного выражения При этом вместо FLD ST(0)/FMUL, выполняется FMUL c memory location, что хуже по пропускной способности, несмотря на кэш.

Ничего они не научились, просто в этом примере аргументы имеют тип double, который может быть непосредственно использован как memory location в FPU инструкциях.
Если поменять на Extended, получится та же хрень с сохранением в память...
Re[3]: Где Борланд свернул не туда?
От: Артём Австралия жж
Дата: 04.06.25 03:40
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Всё верно. Смолток умер под гнётом собственной жадности — плюсовый компилятор было решено распространять бесплатно, а смоллток был настолько прекрасен, что за него ломили вполне ощутимую сумму.

S>Ну, вот в итоге законопослушные западные разработчики и перебежали на значительно менее совершенные среды.
Вроде Страуструп подавал идею С++ — как близкий к железу C без накладных расходов медленного Смоллтока. Про платность Смоллтока он не упоминал. Это уже потом пошла тема "дешевле докупить плашку памяти, чем искать баги порчи памяти у C++". С++ был прекрасен вначале, то того, как из него нагородили противоречивый костыле-всемогутор.
Re[4]: Где Борланд свернул не туда?
От: dsorokin Россия  
Дата: 04.06.25 10:19
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Вроде Страуструп подавал идею С++ — как близкий к железу C без накладных расходов медленного Смоллтока. Про платность Смоллтока он не упоминал. Это уже потом пошла тема "дешевле докупить плашку памяти, чем искать баги порчи памяти у C++". С++ был прекрасен вначале, то того, как из него нагородили противоречивый костыле-всемогутор.


А когда это было? Просто самый первый эффективный сборщик мусора впервые появился именно в Смолтоке, и это было где-то в районе 84-85 годов. Пишу по памяти. Сейчас это обычно называется сборкой на основе поколений, а тогда сами создатели назвали его как-то похоже на "эфемерную" сборку (ephemerial). Точного названия не помню. Прочитал в одной книге по лиспу.

Возможно, что Страуструп говорил о более раннем сборщике мусора, который действительно был медленным.
Re: Где Борланд свернул не туда?
От: zx zpectrum  
Дата: 04.06.25 10:51
Оценка: +2
K>Где Борланд свернул не туда? Почему просрали такой ВЕЛИКИЙ продукт?
Продукт просрали примерно в тот момент, когда коллектив безумно продуктивных творцов с горящим взором сменился на резиновоголовых манагеров, которых ничего, кроме стрижки купонов, в продукте не интересует (Inprise, Embarcadero, и прочие корпорастные бизнес-сущности).
Re[4]: Где Борланд свернул не туда?
От: zx zpectrum  
Дата: 04.06.25 10:56
Оценка: +1
S>Его используют меньше 2%
Что тоже чрезвычайно дофига, на минуточку. Вполне может так статься, что в абсолютных цифрах Дельфя ничего и не потеряла, а просто-напросто размылась доля: с 1998-го программизм разросся как на дрожжах. От нишевой профессии фанатиков до вторых юристов-экономистов, коих наплодили, как собак нерезанных.
Re[5]: Где Борланд свернул не туда?
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.06.25 11:39
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>А когда это было? Просто самый первый эффективный сборщик мусора впервые появился именно в Смолтоке, и это было где-то в районе 84-85 годов. Пишу по памяти. Сейчас это обычно называется сборкой на основе поколений, а тогда сами создатели назвали его как-то похоже на "эфемерную" сборку (ephemerial). Точного названия не помню. Прочитал в одной книге по лиспу.

Там дело не в сборщике мусора, а в гомоиконичности. То есть когда Кей говорил "всё есть объект" он имел в виду "всё есть объект". Безо всяких исключений.
В частности, чтобы сложить три и четыре в Смолтоке мы посылаем объекту "три" сообщение "прибавь" с параметром "четыре", а в ответ нам приезжает результат-объект "7".
Ну, ок, "сообщения" там были вызовами методов, а не шинным обменом между акторами, но идея сохраняется — нет никаких "нативных целых", есть ссылки на объект-число.
Примерно как джавовские референс-типы Integer или Float, или забоксенные дотнетовые value-типы.
Статическая типизация сего затруднена потому, что классы — тоже объекты, и мы запросто можем "на лету" добавить к классу "целое число" новый метод.
И вообще у любого класса есть метод "обработать неизвестное сообщение".
Поэтому написать какой-то магический джит, который из вот этих вот вызовов виртуальных методов сделает эффективный ассемблерный код с MOV EAX, 3; ADD EAX, 4 — крайне тяжело.

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

D>Возможно, что Страуструп говорил о более раннем сборщике мусора, который действительно был медленным.

Страуструп в первую очередь говорил о возможности не платить за абстракции, которыми не пользуешься.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Где Борланд свернул не туда?
От: rudzuk  
Дата: 04.06.25 16:18
Оценка:
Здравствуйте, zx zpectrum, Вы писали:

z> K>Где Борланд свернул не туда? Почему просрали такой ВЕЛИКИЙ продукт?


z> Продукт просрали примерно в тот момент, когда коллектив безумно продуктивных творцов с горящим взором сменился на резиновоголовых манагеров, которых ничего, кроме стрижки купонов, в продукте не интересует (Inprise, Embarcadero, и прочие корпорастные бизнес-сущности).


Чего это ты Inprise с Embarcadero в один ряд поставил? Inprise это тупо самопереименование Борланда, которое они расшифровывали, как Integration Enterprise. Через пару лет переименовались обратно (клоуны штопаные). Embarcadero была и есть девелоперской компанией, которая разрабатывала инструментарий для БД на продуктах Борланда. К слову, Embarcadero привнесла в Delphi очень много нового: и серьезное развитие языка и покрытие платформ. И, вроде как, не намерены останавливаться
avalon/3.0.2
Re[5]: Где Борланд свернул не туда?
От: Kocur  
Дата: 04.06.25 16:53
Оценка:
Здравствуйте, zx zpectrum, Вы писали:

ZZ>Что тоже чрезвычайно дофига, на минуточку. Вполне может так статься, что в абсолютных цифрах Дельфя ничего и не потеряла, а просто-напросто размылась доля: с 1998-го программизм разросся как на дрожжах.



нет-нет, очень много программистов ушли с Delphi, тысячи
Re[8]: Где Борланд свернул не туда?
От: Ilya81  
Дата: 04.06.25 17:20
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Но мы ведь говорим про компанию, которая началась как разработчик удобных компиляторов и IDE и представляется, что для лидирующего положения на рынке необходимо было выпускать актуальные для нового железа и софта средства. А вот с этим у борланда что-то пошло не так. Хотя, надо отметить, что Borland C++ был заметно более актуализированным и даже, емнип, уже в 1992-м имелись дополнения для создания 32-битных программ для MS-DOS, чего не стали делать для Паскаль-среды.


В те времена у Borland были едва ли не лучшие IDE, я всего лет 20 назад послдний раз пользовался Turbo C. И TurboVision по своим временам был весьма удобным. А вот для настоящего GUI у них как-то не получилось сделать что-то достойное. Может, по части IDE у них что-то и бло достойное, но полноценно не поддреживало ни один годный toolkit. Я ещё помню времена, когда скачать из inet'а, скжаем, netbeans было чем-то нереальнм, а на CD'юках как раз можно было найти самые разные товрения Borland. Но я хорошо помню, что на их альтернативе написать ничего толком невозможно было. Тогда, кстати, на java можно было делать applets для web ui, а CSS в Web ещё едва набирал популярность, AJAX — ещё только в проекте.
Re[12]: Где Борланд свернул не туда?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.06.25 05:02
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Вот так это выглядит на XE2:

А можете тоже проверить на XE2 вот этот вариант?
s := a*a;
s := t + b*b;
s := t + c*c;
s := Sqrt(s);
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: Где Борланд свернул не туда?
От: rudzuk  
Дата: 05.06.25 07:19
Оценка:
Здравствуйте, Sinclair, Вы писали:

S> А можете тоже проверить на XE2 вот этот вариант?

S>
S> s := a*a;
S> s := t + b*b;
S> s := t + c*c;
S> s := Sqrt(s);
S>


В этом коде точно нет опечатки?
avalon/3.0.2
Re[14]: Где Борланд свернул не туда?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.06.25 08:16
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Здравствуйте, Sinclair, Вы писали:


S>> А можете тоже проверить на XE2 вот этот вариант?

S>>
S>> s := a*a;
S>> s := t + b*b;
S>> s := t + c*c;
S>> s := Sqrt(s);
S>>


R>В этом коде точно нет опечатки?


Смотри http://files.rsdn.org/69464/delphi6_float2.png
и солнце б утром не вставало, когда бы не было меня
Re[15]: Где Борланд свернул не туда?
От: rudzuk  
Дата: 05.06.25 08:23
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> R>В этом коде точно нет опечатки?


S> Смотри http://files.rsdn.org/69464/delphi6_float2.png


Это я уже видел (не уверен, что там была включена оптимизация). Я про код спрашиваю, потому-что он не эквивалентен предыдущему, где все вычисления делаются в одном выражении.
avalon/3.0.2
Re[9]: Где Борланд свернул не туда?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.06.25 12:34
Оценка: +1
Здравствуйте, Ilya81, Вы писали:

I>В те времена у Borland были едва ли не лучшие IDE, я всего лет 20 назад послдний раз пользовался Turbo C. И TurboVision по своим временам был весьма удобным. А вот для настоящего GUI у них как-то не получилось сделать что-то достойное.


У них для GUI OWL (СОВА) была, в принципе, вполне можно было на нём что-то делать, я даже пробовал. Я, правда, поздно с ней познакомился, вышел C++ Builder 1.0, там уже VCL была


I>Может, по части IDE у них что-то и бло достойное, но полноценно не поддреживало ни один годный toolkit.


Вот эту фразу вообще не понял


I>Я ещё помню времена, когда скачать из inet'а, скжаем, netbeans было чем-то нереальнм, а на CD'юках как раз можно было найти самые разные товрения Borland. Но я хорошо помню, что на их альтернативе написать ничего толком невозможно было. Тогда, кстати, на java можно было делать applets для web ui, а CSS в Web ещё едва набирал популярность, AJAX — ещё только в проекте.


Да нормально можно было всё написать
Маньяк Робокряк колесит по городу
Re[14]: Где Борланд свернул не туда?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.06.25 13:47
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Здравствуйте, Sinclair, Вы писали:


S>> А можете тоже проверить на XE2 вот этот вариант?

S>>
S>> s := a*a;
S>> s := t + b*b;
S>> s := t + c*c;
S>> s := Sqrt(s);
S>>


R>В этом коде точно нет опечатки?

Да, туплю, конечно же есть.
a:= Random;
b:= Random;
c:= Random;
s:= a*a;
s:= s + b*b;
s:= s + c*c;
s:= Sqrt(c);
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[15]: Где Борланд свернул не туда?
От: rudzuk  
Дата: 05.06.25 16:46
Оценка: 3 (1)
Здравствуйте, Sinclair, Вы писали:

S> R>В этом коде точно нет опечатки?


S> Да, туплю, конечно же есть.

S>
S> a:= Random;
S> b:= Random;
S> c:= Random;
S> s:= a*a;
S> s:= s + b*b;
S> s:= s + c*c;
S> s:= Sqrt(c);
S>


А в этом коде точно нет опечатки? Sqrt(c) ???
avalon/3.0.2
Re[15]: Где Борланд свернул не туда?
От: rudzuk  
Дата: 05.06.25 16:51
Оценка: 3 (1)
Здравствуйте, Sinclair, Вы писали:

procedure Test;
var
  a, b, c, s : Double;
begin
  a := Random;
  b := Random;
  c := Random;

  s := a * a;
  s := s + b * b;
  s := s + c * c;
  s := Sqrt(s);

  WriteLn(s);
end;


Project1.dpr.13: begin
0000000000424F80 4883EC48         sub rsp,$48
0000000000424F84 660F7F7C2430     movdqa dqword ptr [rsp+$30],xmm7
0000000000424F8A 660F7F742420     movdqa dqword ptr [rsp+$20],xmm6
Project1.dpr.14: a := Random;
0000000000424F90 E86B03FEFF       call Random
0000000000424F95 660F29C6         movapd xmm6,xmm0
Project1.dpr.15: b := Random;
0000000000424F99 E86203FEFF       call Random
0000000000424F9E 660F29C7         movapd xmm7,xmm0
Project1.dpr.16: c := Random;
0000000000424FA2 E85903FEFF       call Random
Project1.dpr.18: s := a * a;
0000000000424FA7 660F28CE         movapd xmm1,xmm6
0000000000424FAB F20F59CE         mulsd xmm1,xmm6
Project1.dpr.19: s := s + b * b;
0000000000424FAF 660F28D7         movapd xmm2,xmm7
0000000000424FB3 F20F59D7         mulsd xmm2,xmm7
0000000000424FB7 F20F58CA         addsd xmm1,xmm2
Project1.dpr.20: s := s + c * c;
0000000000424FBB 660F28D0         movapd xmm2,xmm0
0000000000424FBF F20F59D0         mulsd xmm2,xmm0
0000000000424FC3 F20F58CA         addsd xmm1,xmm2
Project1.dpr.21: s := Sqrt(s);
0000000000424FC7 660F29C8         movapd xmm0,xmm1
0000000000424FCB E88005FEFF       call Sqrt
0000000000424FD0 660F29C1         movapd xmm1,xmm0
Project1.dpr.23: WriteLn(s);
0000000000424FD4 488B0D45800000   mov rcx,[rel $00008045]
0000000000424FDB E82018FEFF       call @Write0Ext
0000000000424FE0 4889C1           mov rcx,rax
0000000000424FE3 E83818FEFF       call @WriteLn
Project1.dpr.24: end;
avalon/3.0.2
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.