Re[7]: Химик, что там сейчас в Дельфе?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 24.01.19 13:27
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Я что-то многопоточное да дельфе делал году в 1999-м, все там было. До этого в основном под ДОС писал, поэтому настоящая многопоточность была мне тогда в диковинку.


А что там удивительного? Учитывая, что это было лишь обёрткой над winapi'шным CreateThread.
Re[6]: Химик, что там сейчас в Дельфе?
От: swame  
Дата: 24.01.19 13:39
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


Y>>Че-то у вас не те претензии к Delphi

Y>>Операторы там перегружаются, коллекции какие-никакие есть. С читаемостью же, имхо, все очень не плохо.

N>Это ещё старые претензии. С другой стороны, все эти плюшки стали появляться только недавно.


N>Перегрузка операторов в каком году? Судя по логу, в 2013-м году это работало только для Андроида. А на десктопе?


Перегрузка операторов для винды где-то 2005-2007
В Delphi.Net раньше

N>Объявление переменных в месте использования в 2018.


Малонужная вещь, иногда полезная

N>А коллекции с произвольными типами когда появились?


2008-2010 примерно
Re[3]: Химик, что там сейчас в Дельфе?
От: Khimik  
Дата: 24.01.19 13:44
Оценка:
>Допускаю, что я за неделю не успел нормально изучить язык, но всё равно уверен, что такого компактного и при этом хорошо читаемого кода, как на С++, получить бы мне не удалось принципиально.

Я тут не понимаю. Почему код на C++ более компактен и лучше читаем?

>А на Делфи это был ужасный кустарный код, полный велосипедов.


А здесь мне всё понятно. Действительно, я профессиональный велосипедист), и мне всегда было проще придумать алгоритм самому, чем искать сторонние библиотеки.
Я вот думаю, если на Delphi главная проблема — нехватка библиотек, может дельфисты из России захотят объединиться и обмениваться библиотеками? Я планирую написать об этом на геймдеве.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[4]: Химик, что там сейчас в Дельфе?
От: swame  
Дата: 24.01.19 13:44
Оценка:
Здравствуйте, Alexander G, Вы писали:

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


N>>Грубо говоря, на С++ быстренькой реализовывались классы матриц и векторов, перегрузить арфметические операторы, для коллекций использовать STL. А на Делфи это был ужасный кустарный код, полный велосипедов. Допускаю, что я за неделю не успел нормально изучить язык, но всё равно уверен, что такого компактного и при этом хорошо читаемого кода, как на С++, получить бы мне не удалось принципиально.


AG>Это так, на Delphi сложно писать программу, которая что-либо считает


AG>Вот, кстати, темы Химика вполне иллюстрируют проблему


AG>https://rsdn.org/forum/philosophy/7306082.1
Автор: Khimik
Дата: 23.11.18

AG>https://rsdn.org/forum/asm/7308041.1
Автор: Khimik
Дата: 25.11.18


По Химику судить о реальном Delphi это как по познаниям юного пиротехника о современной химии.
Отредактировано 24.01.2019 13:58 swame . Предыдущая версия .
Re[4]: Химик, что там сейчас в Дельфе?
От: s_aa Россия  
Дата: 24.01.19 13:48
Оценка:
K>Я вот думаю, если на Delphi главная проблема — нехватка библиотек, может дельфисты из России захотят объединиться и обмениваться библиотеками? Я планирую написать об этом на геймдеве.

Чего, куда??? Клади на гихаб, тамже поиск "delphi". 7,656 repository results
Жизнь не обязана доставлять удовольствие. Достаточно отсутствия страданий.
Re[3]: Химик, что там сейчас в Дельфе?
От: swame  
Дата: 24.01.19 13:53
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


K>>Мне вот не очень понятно, почему сейчас гораздо чаще пишут на C++ чем на Delphi. По-моему это принципиально достаточно похожие языки, но в C++ многое сложилось исторически как напластование рудиментов, а Delphi всё гораздо красивее. Сейчас мне кажется, что основная причина упадка Delphi – мало библиотек и нет нормальной поддержки Linux и Android/Ios.


N>Всё не так, Делфи исторически предназначался для написания десктопных программ под Windows, в том числе интерфейсов. Из этой области Делфи и С++ выпер .Net + C#. С++ и Делфи мало конкурировали.

N>Мне как-то давно (год 2005 или около того) надо было написать диплом для девочки по машинной графике на Делфи. Как раз твоя область: всякое 3D без применения аппаратного ускорения, а пиксели ручками. Это было настоящее мучение, потому что не было шаблонов и аналогов STL. Поначалу я просто не понимал, как на этом языке что-то писать. Грубо говоря, на С++ быстренькой реализовывались классы матриц и векторов, перегрузить арфметические операторы, для коллекций использовать STL. А на Делфи это был ужасный кустарный код, полный велосипедов. Допускаю, что я за неделю не успел нормально изучить язык, но всё равно уверен, что такого компактного и при этом хорошо читаемого кода, как на С++, получить бы мне не удалось принципиально.

Мдя, я тут неделю назад начал осваивать сноуборд, и при прыжках с трамплина почему-то падаю, хотя на горных лыжах умею это уже 20 лет.
Отредактировано 24.01.2019 13:56 swame . Предыдущая версия .
Re[4]: Химик, что там сейчас в Дельфе?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 24.01.19 15:07
Оценка: +1
Здравствуйте, Khimik, Вы писали:

K>Я тут не понимаю. Почему код на C++ более компактен и лучше читаем?


Потому что вся логика реализуется в более понятных абстракциях. Перегрузка арифметических операций позволяет писать единообразный код для перемножения и сложения матриц, векторов, скаляров. Не надо помнить, какие там функции для этого (типа MatMulToVect(M, V)), а писать просто: M * V.
Самое крутое, что можно в таком стиле писать большие выражения, а они уже будут вычисляться не по частям, а как единое целое. Так умеет Eigen, OpenCV и множество других библиотек.
Re[7]: Химик, что там сейчас в Дельфе?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 24.01.19 15:08
Оценка: +2
Здравствуйте, swame, Вы писали:

N>>Объявление переменных в месте использования в 2018.

S>Малонужная вещь, иногда полезная

Ха-ха-ха!
Re[4]: Химик, что там сейчас в Дельфе?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 24.01.19 15:09
Оценка:
Здравствуйте, swame, Вы писали:

S>Мдя, я тут неделю назад начал осваивать сноуборд, и при прыжках с трамплина почему-то падаю, хотя на горных лыжах умею это уже 20 лет.


Ещё хуже: сноуборд пришлось предварительно самому выстругать из доски.
Re[5]: Химик, что там сейчас в Дельфе?
От: swame  
Дата: 24.01.19 15:27
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


S>>Мдя, я тут неделю назад начал осваивать сноуборд, и при прыжках с трамплина почему-то падаю, хотя на горных лыжах умею это уже 20 лет.


N>Ещё хуже: сноуборд пришлось предварительно самому выстругать из доски.


Ну поскольку за неделю блужданий в горах не удалось найти магазин со сноубордами пришлось выстругать из елки.
А может так и надо было по замыслу диплома
Отредактировано 24.01.2019 15:28 swame . Предыдущая версия .
Re[8]: Химик, что там сейчас в Дельфе?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 24.01.19 17:37
Оценка:
Здравствуйте, Nuzhny, Вы писали:

DM>>Я что-то многопоточное да дельфе делал году в 1999-м, все там было. До этого в основном под ДОС писал, поэтому настоящая многопоточность была мне тогда в диковинку.


N>А что там удивительного? Учитывая, что это было лишь обёрткой над winapi'шным CreateThread.


Да просто очень непривычно после ДОСа-то однозадачного.
Re[5]: Химик, что там сейчас в Дельфе?
От: Khimik  
Дата: 24.01.19 18:31
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


K>>Я тут не понимаю. Почему код на C++ более компактен и лучше читаем?


N>Потому что вся логика реализуется в более понятных абстракциях. Перегрузка арифметических операций позволяет писать единообразный код для перемножения и сложения матриц, векторов, скаляров. Не надо помнить, какие там функции для этого (типа MatMulToVect(M, V)), а писать просто: M * V.

N>Самое крутое, что можно в таком стиле писать большие выражения, а они уже будут вычисляться не по частям, а как единое целое. Так умеет Eigen, OpenCV и множество других библиотек.

Ну вот в Delphi XE8 есть рекорды с процедурами и функциями. По-моему, их можно назвать статическими классами.
Скажем, есть у меня рекорд — вектор (три координаты):

type
TVect=record
x,y,z:double;
function VectRad:double;//Длина вектора
function VectRad2:double;//Квадрат длины
function IsNil:boolean;//Равен ли нулю
function MinVect:tvect;//Поменять все знаки
end;

Так что в коде можно писать, например:

CurRadius:=myvector1.VectRad;

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

function SumVects(vect1,vect2:tvect):tvect;
begin
result.x:=vect1.x+vect2.x;
result.y:=vect1.y+vect2.y;
result.z:=vect1.z+vect2.z;
end;

Когда дойдут руки, заменю её на это:

TVect=record
...
class operator Add(self, othervect:tvect):tvect;
end;

И можно будет в коде писать так:

MyVector3:=MyVector1+MyVector2;

Хотя уже на этом примере видно, что такой подход далеко не всегда применим: скажем, умножать два вектора можно по-разному (скалярное или векторное умножение).
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[2]: Химик, что там сейчас в Дельфе?
От: anonymouse2 Иностранный Агент
Дата: 24.01.19 18:37
Оценка:
Здравствуйте, Khimik, Вы писали:

K> Я как программист скорее непрофессионал, поскольку у меня только один проект — графическая программа для химиков


Кстати а что за программа, если не секрет? Химическое моделирование? Насколько глубоко нужно знать химию чтобы такую написать? Много ли конкурентов?
Я вот думаю (в связи со спорами с Shmj о происхождении жизни, и также с некоторыми высказываниями в соцсетях), может ознакомиться с областью софтостроения в органической химии и биологии...
Нет такого преступления, на которое не пошло бы суверенное родоплеменное быдло ради продления своего бессмысленного рода и распространения своего бессмысленного генома.
Re[6]: Химик, что там сейчас в Дельфе?
От: swame  
Дата: 24.01.19 19:15
Оценка:
K>Хотя уже на этом примере видно, что такой подход далеко не всегда применим: скажем, умножать два вектора можно по-разному (скалярное или векторное умножение).

Согласен, выражение реальной математики в виде перегруженных операторов ограничивается малым числом операторов в программировании, в которые можно отобразить математические символы, которых намного больше. Получается только +, -, частично *, /.
Я писал с использованием перегрузок большую библиотеку для 2D графики, там например нужно четко проводить границу между вычислениями с плавающей точкой и целочисленными вычислениями, это далеко от математических формул.
Все равно получаются цепочки вызовов функций типа такого


Оператор сложения для массивов векторов просто побоялся написать — что он будет означать — объединить эти массивы в один один за другим или попарно сложить в них точки?
Re[2]: Химик, что там сейчас в Дельфе?
От: alex_public  
Дата: 25.01.19 05:02
Оценка: +1 -1
Здравствуйте, Khimik, Вы писали:

K> Я знаю действительно мало конкретики про C++, C#, и это наверно действительно моя проблема, надо наверстать. Мне вот не очень понятно, почему сейчас гораздо чаще пишут на C++ чем на Delphi. По-моему это принципиально достаточно похожие языки, но в C++ многое сложилось исторически как напластование рудиментов, а Delphi всё гораздо красивее.


Это у тебя совсем не верное представление о языках и их похожести. На самом деле схема такая:

— Язык Pascal (который древний, без всяких префиксов) с точностью до синтаксических мелочей равен по возможностям языку C. Оба языка почти не развиваются в данное время (хотя C всё же чуть лучше чувствует в этом смысле). При этом C используется очень много где, а про чистый Паскаль я давно не слышал.
— В середине 90-ых язык Borland Pascal (ранее Turbo Pascal) был приблизительно равен по возможностям языку C++ . Но ветка развития Turbo Pascal остановилась в этих самых 90-ых, а C++ активно развивался все эти годы, так что сейчас никакого сравнения естественно быть не может. Однако если бы тогда Borland не слил это направление и его продолжили активно развивать, то возможно это был бы равный C++ конкурент. Потенциал во всяком случае был, но этого не случилось — полностью умерло.

— а вот язык Delphi (в девичестве Object Pascal) относится совсем к другой категории языков (рефлексия, динамика, подсчёт ссылок, свойства и т.п.) и из семейства C-подобных напоминает большего всего убогий Objective-C с небольшой примесью VisualBasic (в смысле RAD возможностей).

Ну а C# это уже третья категория языков (виртуальная машина, байт-код, сборщик мусора и т.д и т.п.), который является копией Java, а в семействе языков Pascal никого похожего нет (портирование Паскаля под JVM/.Net естественно не считаем — это вообще другие языки выходят).

Так вот эти три категории языков принципиально разные (причём я совсем не про синтаксис говорю!) и применяются для совсем разных целей.

K>Сейчас мне кажется, что основная причина упадка Delphi – мало библиотек и нет нормальной поддержки Linux и Android/Ios.


Основная причина упадка Delphi в том, что эта платформа была хороша только для очень узкой категории ПО: только десктоп, только винда, желательно что-нибудь с кучей формочек и без требования производительности. Сейчас же сами десктопные приложения в упадке на массовом рынке и используется преимущественно профессионалами (всяческие CAD'ы и т.п., требующее производительность и 3D графику, причём ещё желательно кроссплатформенно, т.е. опять же не для Delphi). А основной рынок переехал в веб и на мобилки.

K> В последней теме есть ссылки на бенчмарки Delphi vs C++, и написали что сейчас вроде по скорости Delphi не должен ему уступать.


Забавная шутка...
Re[7]: Химик, что там сейчас в Дельфе?
От: elmal  
Дата: 25.01.19 07:30
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Я что-то многопоточное да дельфе делал году в 1999-м, все там было. До этого в основном под ДОС писал, поэтому настоящая многопоточность была мне тогда в диковинку.

Дело не просто в многопоточности. А примитивы синхронизации, какие то гарантии при конкуррентном обращении к области памяти, всякие атомарные операции, барьеры и тому подобное. Плюс легкое распараллеливание, всякие пулы потоков и тому подобное. Или это все ручками нужно лисапедить по прежнему?
Re[3]: Химик, что там сейчас в Дельфе?
От: Khimik  
Дата: 25.01.19 07:48
Оценка:
Здравствуйте, anonymouse2, Вы писали:

A>Кстати а что за программа, если не секрет? Химическое моделирование? Насколько глубоко нужно знать химию чтобы такую написать? Много ли конкурентов?

A>Я вот думаю (в связи со спорами с Shmj о происхождении жизни, и также с некоторыми высказываниями в соцсетях), может ознакомиться с областью софтостроения в органической химии и биологии...

anonymouse2, а давайте обмен — услуга за услугу? Найдите мне на rsdn пост мыщъх-а, где он писал, что в США серьёзные компании переходят с C++ на C. Был же вроде такой пост...
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[8]: Химик, что там сейчас в Дельфе?
От: BlackEric http://black-eric.lj.ru
Дата: 25.01.19 09:29
Оценка:
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, D. Mon, Вы писали:


DM>>Я что-то многопоточное да дельфе делал году в 1999-м, все там было. До этого в основном под ДОС писал, поэтому настоящая многопоточность была мне тогда в диковинку.

E>Дело не просто в многопоточности. А примитивы синхронизации, какие то гарантии при конкуррентном обращении к области памяти, всякие атомарные операции, барьеры и тому подобное. Плюс легкое распараллеливание, всякие пулы потоков и тому подобное. Или это все ручками нужно лисапедить по прежнему?

async/await там нет и близко. Есть threadvar. Пула потоков еще пару лет назад не было. Есть сторонние реализации, но на то они и сторонние, что качество и вероятность развития не известны.

Реально Делфи пригоден только для разработки десктопного софта под виндовс. Но эта ниша полностью перекрывается C#+WiunForms/WPF.
https://github.com/BlackEric001
Re[4]: Химик, что там сейчас в Дельфе?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.01.19 11:08
Оценка: +1
Здравствуйте, Khimik, Вы писали:

K>Найдите мне на rsdn пост мыщъх-а, где он писал, что в США серьёзные компании переходят с C++ на C. Был же вроде такой пост...


Он чего только не писал, нет смысла доверять всему. Про С/С++ было например здесь
Автор: Abalak
Дата: 23.04.15
.
Re[6]: Химик, что там сейчас в Дельфе?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.01.19 11:21
Оценка:
Здравствуйте, Khimik, Вы писали:

K>На самом деле, я только начал понемногу переписывать старый дерьмокод, который писал без этих возможностей. Для суммы векторов у меня пока есть функция:


K>function SumVects(vect1,vect2:tvect):tvect;

K>begin
K>result.x:=vect1.x+vect2.x;
K>result.y:=vect1.y+vect2.y;
K>result.z:=vect1.z+vect2.z;
K>end;

K>Когда дойдут руки, заменю её на это:


K>TVect=record

K>...
K>class operator Add(self, othervect:tvect):tvect;
K>end;

K>И можно будет в коде писать так:


K>MyVector3:=MyVector1+MyVector2;


Да! Как раз так и надо писать.
Но С++ всё таки умеет больше, например, expression templates в том же Eigen может оптимизировать матричные операции на этапе компиляции, объединяя их в одно выражение. Это позволяет писать математическую логику очень оптимально и при этом очень читабельно.

K>Хотя уже на этом примере видно, что такой подход далеко не всегда применим: скажем, умножать два вектора можно по-разному (скалярное или векторное умножение).


Умножать можно только одним способом, рассматривая вектора, как одномерные матрицы. Векторное и скалярное произведения уже не должны кодироваться арифметическими операциями.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.