Vasily @vasan
Programmer, musician, composer
Информация
- В рейтинге
- Не участвует
- Откуда
- Красноярский край, Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
DSP/VST/DAW Developer
OOP
C++
C
Software development
Visual Studio
Delphi
Lazarus
PHP
Objective-C
Музыкальный софт, например, в основном для Win и Mac пишут. Зайдите на сайт №1 в мире по музыкальному софту, и посмотрите много ли там предлагают под Linux. Да и подавляющее число производителей музыкального оборудования не поддерживают Linux на уровне драйверов.
А это справедливо для каких именно чисел: single, double или extended?
Вот в том то и дело, большая часть автоматического сбора мусора в Delphi/Lazarus решается производными TComponent. А освобождение остальных объектов, производных TObject, особо не напрягает. Поэтому не всегда овчинка стоит выделки, мне лично незачем писать отдельный код для этого, достаточно банального
obj.Free;
илиFreeAndNil(obj);
и это абсолютно не напрягает.Первая версия PolyGAS была разработана в 2005 году, в те времена Delphi 7 была де-факто стандартом для многих разработчиков Delphi.
Последняя версия уже была сделана на Delphi XE8 в 2017 году, после чего было решено портировать код на С++.
Ещё немаловажным обстоятельством является тот факт, что VCL некроссплатформена, а FMX наотрез отказывается работать в VST врапперах. Так как профессионалы музыкальной индустрии пишут музыку исключительно под macOS, то на Delphi не удаётся создать плагины под эту ось. По сему в этой нише С++ является де-факто отраслевым стандартом, и навряд ли что то поменяется в будущем.
Я ему про Фому, он мне про Ерёму...
Причём тут TComponent, который ещё с cамой первой версии Delphi известен? Речь то вообще то идёт про умные указатели, и это абсолютно разные вещи, которые роднит только то, что их не нужно освобождать "вручную". Используя TComponent в качестве родительского класса можно напихать в него что угодно, и ещё и закинуть в палитру компонентов, дабы в дизайнтайме его тупо бросать на форму, сведя к минимуму бряцание по клавиатуре. С таким подходом точно умные указатели не потребуются. 😄
Я же вам писал, что GUI FL Studio сделана на Delphi VCL, как и любая программа собранная как CBuilder, так и Delphi. А DSP у них навряд ли сделана на Паскале, скорее всего на ассемблере, потому как не вытягивает Паскаль сложные алгоритмы работы со звуком.
P.S. Вы вообще хоть один VST - плагин то написали, чтобы спорить с человеком, который плагинстроением занимается уже третий десяток лет?
Как вам вот это?
Вот я и про тоже писал человеку, который всё пишет на асме )))
Ага, нужды нет. Одно дело пишешь:
obj := TSameObject.Create;
try
obj.DoSomething;
finally
FreeAndNil(obj);
end;
В случае с Smart Pointer всё проще по идее будет:
obj := TSmartPointer<TSameObject>.Create;
obj.DoSomething;
Так как надобность в try/finally и освобождением объекта отпадает.
P.S. Вашу компетентность в Delphi ставлю под большое сомнение.
Никакие не глупости, откройте любым качественным просмотрщиком ресурсов, например, PE Explorer исполняемый файл FL.exe и смотрите в разделе
RCData
значение параметраDVCLAL
там будет следующее:-C++ Builder Professional Version
А если исполняемый файл был собран Delphi, то Вы увидите примерно такое:
-Delphi Client/Server Suite (Enterprise)
Да что вы говорите? Будьте добры ссылку с официального сайта embarcadero.com с пакетом где имеются умные указатели. А если не сможете - нехрен тогда отрицательный голос в моих ответах ставить!
FL Studio раньше то же на Delphi писалась, однако последние версии всё же на CBuilder сделаны. Хотя CBuilder вполне может собирать и делфийский код, особенно вся VCL написана же на Паскале и прилинковать её к С++ коду в RAD Studio получается без проблем.
Насчёт VST плагинов хочу сказать одно - простые плагины, как правило собрать в Delphi можно без проблем, какой нибудь дисторшн, например. Да и то некоторые фреймворки для этого, как например Delphi ASIO & VST Project, в своём коде DSP используют ассемблерные вставки. Однако, если Вы решите разработать на Delphi, например, сурьёзный виртуальный синтезатор, то поверьте гемора не оберётесь. Пишу потому, что было дело разработал виртуальный синтезатор PolyGAS, который полностью был сделан на Delphi 7. Он нормально работал при скромном количестве одновременно звучащих нот, однако стоило на нём сыграть профессиональному музыканту, он увы уже не "вывозил" поставленную задачу, вызывая перегруз CPU. По сему в данное время на Delphi практически ни кто плагины и тем более DAW не пишет. Благо есть уйма С++ VST фреймворков с вполне демократичной лицензией, например, IPlug2.
О!!! Это как? 😳
Если имелось в виду умные указатели, то как таковых в фабричной поставке "из коробки" их нет. Есть некоторые реализации от энтузиастов, например это. Однако в официальной документации на сайте embarcadero о smart pointers ничего нет.
А сразу в машинном коде слабо писать?
P.S. Мне ещё в институте помнится асм весь мозг вынес. В те времена изучали его для отечественного проца К580ВМ80...
Представляю, сколько строк на асме займёт реализация простого класса с конструктором, деструктором, парой виртуальных методов и несколькими приватными членами. ))) Гемор ещё тот.
P.S. Вот С/С++ ну никак "программированием с презервативом" назвать нельзя, да даже тот же Object Pascal, если на то уж пошло. Как никак указатели имеются, память выделяется/освобождается "вручную" (хотя сейчас в С++ smart pointers имеются) и код выполняется без всяких "презервативов" в виде CLR для C# и JVM для Java.
В этом то и дело. С++ является во многих областях разработки де-факто отраслевым стандартом, например, разработка DAW и VST, там уж извините ни C# ни Delphi тем более прочее "программирование с презервативом" типа Python и Java не используется.
На вкус и цвет как говорится. А мне наоборот C# не нравится, не буду писать по каким причинам, это займёт уйму времени. Мой идеальный ЯП это С++.
А я бы на современном Object Pascal (Delphi или Lazarus) этот эмулятор реализовал, так сказать отдать дань уважения к изначальным разработчикам. Тем более по ссылке на гитхаб кое какие кода на древнем Паскале имеются.
А что тогда эмулятор написан на C#, а не на Delphi/Lazarus?