Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Embarcadero RAD Studio XE3

Автор: valgreesh
Дата сообщения: 21.04.2013 16:42
HeMet




Цитата:
последние несколько лет говорят, что уберут эту конструкцию, потому что она бардака добавляет и вообще нужно использовать промежуточные переменные.


Вот и пусть используют кому добавляет, а меня не прикалывает здоровую библу перелопачивать для совместимости. Уроды, блин Похоже, пора валить на FPC.
Автор: zertyuiop
Дата сообщения: 21.04.2013 22:04
Про FPC вы правильно говорите, при наличии прямых рук возможно писать программы лучше, чем на RAD Studio (вспомним Total Commander).

Сам сижу на XE2 (в XE3 так и не пошла документация), надеялся на XE4, но реакция та же. По моему мнению, XE2 остается самой стабильной версией. Visual Studio в нужной редакции для меня слишком дорог.

Евгений Крюков продался Embarcadero с потрохами (хотя, если посмотреть, там многие подобные люди сидят), и, как видно, не работает. FireMonkey еще слишком сырой, для чего-то мощнее демонстратора технологий он не подходит.

Из достойных продуктов Embarcadero можно назвать разве что RADPHP (не HTML5Builder) и Interbase.
RAD Studio успешно загибается, уже переходят на полугодовой режим выпуска версий (бабло только качать), FireMonkey не оправдывает ожиданий, документация по типу Visual Studio, без самой Visual Studio, на нескольких компьютерах у меня не пошла. Одно радует: 64-битные компиляторы, но проблем все равно больше.

Сам перехожу на Lazarus/FPC и Qt SDK (лицензию на коммерческую версию я осиливаю без проблем). 5 версия Qt очень порадовала, Lazarus 1.0.8 достаточно стабилен.

Летит RAD Studio в трубу, главное, вовремя слезть.

Как вариант, можно использовать Oxygene, но с ним я еще дело не имел.
Автор: LadyOfWood
Дата сообщения: 21.04.2013 22:29

Цитата:
при наличии прямых рук возможно писать программы лучше, чем на RAD Studio (вспомним Total Commander).

А Total вроде на Delphi 2. Или это про 64 бита?
Автор: miwa
Дата сообщения: 22.04.2013 10:09
LadyOfWood
64-битный точно на FPC собирается; а где-то видел (возможно что и домыслы), что автор вообще полностью на лазарус переходит. Сейчас ссылку найти не могу, так что «за что купил, за то продаю».
Автор: deks
Дата сообщения: 22.04.2013 11:55
LadyOfWood

по поводу нативных для платформы managed-code SDK: windows phone разработка сейчас вся на managed-code. Нативный C/C++ вроде бы анонсирован, но пока нету.

С BB10 ситуация вообще запутанная - там есть равноправные SDK - native C/C++ (QT), android/java runtime, adobe air и html5.

С palm webOS думаю, все и так понятно - JS, аналогично с FirefoxOS. Про bada/tizen/и прочие нишевые поделки не в курсе.

Но iOS+Android+BB+WinPhone покрывают 99% мобильных платформ. Для многих есть нативные managed решения. Ну и iOS нельзя назвать полностью классической нативной платформы - там типизирование все-таки динамическое (гуглить Objective-C runtime - там написано как именно заворачиваются классы в вызовы C-функций).

RuXandr

Чем AnsiString не угодил? На iOS нативным типом является строка UTF-16, fixed-width 2-byte characters. Причем, строка - это объект. Видимо, ЭМРО не хотелос в новом компиляторе городить поддержку типов вроде "указатель на массив символов" - прямой необходимости в них на мобильной платформе нету, а "для совместимости" можно перенести на потом - как будут менять компилятор для desktop. Думаю, при такой замене VCL станет legacy, и "отомрет" - видимо, для VCL оставят старый компилятор win32/64. Для всех новых FMX проектов будут использовать новый компилятор, как на desktop, так и на мобильных платформах. А может к тому времени старая кодовая база отомрет сама собой, и не придется тащить за собой костыли совместимости с древним багажом - эдакий Apple-way.
Автор: RuXandr
Дата сообщения: 22.04.2013 12:41
deks,
Да я тоже так думаю, что теперь новой делфе нужно играть по правилам LLVM, отсюда видимо и неизменяемые строки. Однако ведь вы же не перестаете пользоваться типом BYTE, когда есть тип NativeInt? Я это к тому что AnsiString/AnsiChar типы полезные сами по себе а не только для совместимости. А вот что больше всего меня расстроило так это то что убрали WITH. Я лично считаю что это великая глупость. Да при его использовании есть возможность сделать определенный тип ошибок, однако плюсов я считаю все равно больше, чем минусов. Сколько можно сделать ошибок при объявлении временных переменных и присвоению им значения? Это уже не говоря о том что им нужно придумать имена которые иногда должны быть не перекрывающиеся с более высокой областью видимости. И конечно же, все это явно не ускоряет скорость написания кода. Короче печаль. Но походу это еще не все... сегодня прочел в What's new вот это:

Код:
With the DCCIOSARM compiler, finally blocks can catch a hardware exception only if the try block contains a method or function call. This is a difference related to the LLVM backend of DCCIOSARM, which only generates a landing pad for a function, and thus cannot return if no method/function is called in the try block.

For example, this is how to structure a try-finally block that can catch a hardware exception:

var
P: ^Integer = nil;

procedure G1;
begin
P^ := 42;
end;

begin
try
G1;
except
writeln('Catch:G1 - pass');
end;
end.
Автор: LadyOfWood
Дата сообщения: 22.04.2013 14:07

Цитата:
А вот что больше всего меня расстроило так это то что убрали WITH. Я лично считаю что это великая глупость.

Да, возможно и глупость. Но логика в этом есть. With имел проблемы с портированием, например

Код:
var
R: TRect; Form: TForm;

with R, Form do
Width := 100;
Автор: XPerformer
Дата сообщения: 22.04.2013 14:15
LadyOfWood
методы в записях появились значительно раньше. Это не повод беспредельничать, я считаю
Автор: Arioch1
Дата сообщения: 22.04.2013 14:53

Цитата:
Web-"технологии" - это вообще хохма. Поэтому не будем про них. Когда будет хоть какое-то единство в Web'e, тогда и поднимем этот разговор,


Интересные у вас понятия. Значит все, что касается интернета - по определению несерьёзная хохма. Например Microsoft SQL Server - несерьёзная хохма, потому что на нём крутится stackoverflow.com

Кстати, и в нативном мире тоже "нет единства". Кто-то на VB6 пишет, кто-то на ObjC, кто-то на фортране, кто-то на GCJ, кто-то вообще на Дельфи. И даже у пл.сплюсников - разные компиляторы. Нет единства хоть тресни.


Цитата:
Что там с ним? с ejabberd этим? он рвёт всех или что?

Имеем, что как только понадобился не блокнотик на одного юзера, а сервер на десятки тысяч, программы написаные на managed-языках (Erlang, Java) оказались практичнее, чем нативные C++
C jabberd на managed-сервера миргрируют, а обратно - фиг.
Автор: LadyOfWood
Дата сообщения: 22.04.2013 15:12

Цитата:
методы в записях появились значительно раньше. Это не повод беспредельничать, я считаю

Это больше похоже на средство обеспечения устойчивости. Хотя да могли просто пометить как deprecated. Хотя я например with практически не использую.
Автор: XPerformer
Дата сообщения: 22.04.2013 15:24

Цитата:
Это больше похоже на средство обеспечения устойчивости. Хотя да могли просто пометить как deprecated.

Если каждый, у кого молоко на губах не обсохло, будет выкидывать операторы, входившие в стандарт испокон века, то цивилиция, основанная на принципе совместимости снизу вверх, долго не протянет.
Хотя я тоже with почти не использую - и отладчик не всегда однозначно воспринимает, и читабельность хуже
Автор: LadyOfWood
Дата сообщения: 22.04.2013 15:55

Цитата:
Если каждый, у кого молоко на губах не обсохло, будет выкидывать операторы, входившие в стандарт  испокон века, то цивилиция

Это все конечно так, но тут давно забили на стандарты и делают что хотят.

Цитата:
основанная на принципе совместимости снизу вверх, долго не протянет

Лавры Apple сильно заразительны
Автор: XPerformer
Дата сообщения: 22.04.2013 16:04

Цитата:
Это все конечно так, но тут давно забили на стандарты и делают что хотят.

Выхожу со встречным предложением: давайте запретим глобальные переменные.
Зло? несомненно. Но все используют, начиная с переменных Screen и Application
Автор: LadyOfWood
Дата сообщения: 22.04.2013 16:20

Цитата:
Выхожу со встречным предложением: давайте запретим глобальные переменные.

Тише, а то могут и услышать

Цитата:
Но все используют, начиная с переменных Screen и Application

Ну это singleton, как его еще использовать.
Автор: Eternal_Shield
Дата сообщения: 22.04.2013 16:24
Arioch1

Цитата:
Интересные у вас понятия. Значит все, что касается интернета - по определению несерьёзная хохма. Например Microsoft SQL Server - несерьёзная хохма, потому что на нём крутится stackoverflow.com

Стоп-кран. Причём тут MSSQL Server? Разговор за платформы/браузеры.


Цитата:
Кстати, и в нативном мире тоже "нет единства". Кто-то на VB6 пишет, кто-то на ObjC, кто-то на фортране, кто-то на GCJ, кто-то вообще на Дельфи. И даже у пл.сплюсников - разные компиляторы. Нет единства хоть тресни.

Ага, но при этом DrawRectangle хоть ты тресни правильно рисуется и из VB6 приложения и из Delphi и т.п., чего с вебом не наблюдается вообще.


Цитата:
Имеем, что как только понадобился не блокнотик на одного юзера, а сервер на десятки тысяч, программы написаные на managed-языках (Erlang, Java) оказались практичнее, чем нативные C++. C jabberd на managed-сервера миргрируют, а обратно - фиг.

Разумеется, ведь в managed языках плюшек много, которые существенно повышают производительность одного кодера и уменьшают кол-во багов на 1000 строк кода по сравнению с С++/С. Это очевидно ... только вот какова цена всего этого? Я же не зря в одном и постов назад написал про цену всего этого ...

Так к слову: Есть какой-нибудь пример, который убедительно показывает, что managed хоть что-то может? Например, аналог MSSQL Server'a? Или Havok Engine? Может что-нить типа Sony Vegas/Sony Sound Forge? ... или, может, PhotoShop или 3dmax? ... ?
Автор: Arioch1
Дата сообщения: 22.04.2013 16:35
причём тут браузеры ? разговор только о пригодности managed vs native языков для разработки сложных программ.

при чём тут Веб и браузеры ? если уж хочется приплести разные рантаймы думаю, можно найти функцию., которая по разному выполняется на Windows, WinE и Open32. И что с того ?



Цитата:
Или Havok Engine? Может что-нить типа Sony Vegas/Sony Sound Forge? ... или, может, PhotoShop или 3dmax? ... ?

т.е. за исключенем СКУЛя все примеры - математические вычисления над большими матрицами не объектов, а пассивных простых цифр. Из того, что для вычислительной математики managed не применяют, как правило, делается вывод - что "managed не может ничего ваапсче"

Это примерно как говорить, что C++ ничего не может, потому что PhpBB написан не на C.

Да, кстати, IL2 Sturmovik насколько помню написан был на Java 1.4
Конечно, Хавока по тем временам не было, но игра была далеко не аркадной.

Добавлено:

Цитата:
Но все используют, начиная с переменных Screen и Application

  Ну это singleton, как его еще использовать.


Например с обязательным указанием содержащего их объекта (юнита): VCL.Forms.Application

Ну или with VCL.Forms do Application.Hint := ...


Другой вариант, в стиле FMX, завести в язык системную функцию

function System.GetSystemService(const Name: string): IDictionary<string, TValue>;

System.GetSystemService('Screen')['Forms'].AsType<TArray<TForm>>[0].Caption := 'Нашёл!';


Автор: LadyOfWood
Дата сообщения: 22.04.2013 22:29

Цитата:
System.GetSystemService('Screen')['Forms']

В FMX действительно так? Это же клиника, операции со строками всегда самые медленные, зачем их городить где не надо, можно ведь именнованные константы использовать.
Автор: valgreesh
Дата сообщения: 22.04.2013 23:49
Arioch1

Цитата:
Другой вариант, в стиле FMX, завести в язык системную функцию


Как хорошо, что до такого маразма они не додумались. Проблема решается переменными/свойствами класса: TApplication.Instance;
Автор: XPerformer
Дата сообщения: 23.04.2013 06:20

Цитата:
Как хорошо, что до такого маразма они не додумались. Проблема решается переменными/свойствами класса: TApplication.Instance;

Ключевые слова " Проблема решается"
То есть кто хочет - использует глобальные переменные, синглетоны и дядька лысого.
Кто не хочет - свойства класса.
Считаю, отказ от with - это намеренная диверсия, чтобы затруднить перенос кода и отсечь максимальное кол-во желающих портировать код.
Автор: valgreesh
Дата сообщения: 23.04.2013 09:43
XPerformer

Цитата:
Считаю, отказ от with - это намеренная диверсия, чтобы затруднить перенос кода и отсечь максимальное кол-во желающих портировать код.


Вместо убиения старых версий дельфей они рискуют недополучить девелоперов на новых версиях.
Автор: deks
Дата сообщения: 23.04.2013 12:24
RuXandr

Ну.. Это особенность LLVM, которую ЭМРО не смогла победить. Странно, конечно, - ведь LLVM open sourced, следственно можно было поменять код. Типа, "если в нем есть вызов функции или есть try finally, то делать тот самый landing pad". но нужен был форк LLVM с этим дополнением, а это требует квалификации в LLVM, которой, видимо, не хватило - в результате им проще написать в readme чего то такое, чем фиксить нежелательное поведение! Пять минут позора, а x часов квалифицированного разработчика в кармане

Да, ЭМРО я понимаю, но это не значит что одобряю) Мне в целом не очень нравится FMX-way: для себя я пока классифицировал его непригодным.

Автор: LadyOfWood
Дата сообщения: 23.04.2013 15:34

Цитата:
Вместо убиения старых версий дельфей они рискуют недополучить девелоперов на новых версиях.

Об этом они не думают, мне постоянные перетасовки в последних Delphi вообще не очень понятны, вроде и ничего плохого, но с другой стороны уже все привыкли как есть.
Автор: Arioch1
Дата сообщения: 23.04.2013 15:37

Цитата:
Ну.. Это особенность LLVM, которую ЭМРО не смогла победить.

не захотела


Цитата:
Странно, конечно, - ведь LLVM open sourced, следственно можно было поменять код. Типа, "если в нем есть вызов функции или есть try finally, то делать тот самый landing pad"

Этого могли другие не захотеть. Но есть же способ проще - на уровне DCC back-end - убирать внутренности try-finally в скрытые процедуры

Добавлено:
Кстати, вот я привык считать D5 и D7 звздным часом Дельфи... А вдеь там тоже быдлокода хватает.

uses FMTBcd;
Writeln( _LongMultiply('000','123'));
Автор: LadyOfWood
Дата сообщения: 23.04.2013 15:43

Цитата:
D7 звздным часом Дельфи...

D7 был конечно хорош Но вот накой дальше они сделали Delphi 8 это никому не известно.
Автор: delover
Дата сообщения: 23.04.2013 18:33

Цитата:
Но вот накой дальше они сделали Delphi 8 это никому не известно.

Я например в своих исходниках поймал больше 10 багов Delphi8. Тогда я публиковался в централе. У .NET святая идея - компилятор, база и интерфейс - это система, процессор - ничто. Разработано красиво, реализовано сыро как MSDOS 3.5. Ну так то же самое время прошло. Интерфейс совместной жизни с дотнет - нот манагед, по этому вижул студия быстрая. В те времена MS ушла от общественности, сейчас похоже и Delphi уходит (я бы без вливаний тоже ушол).
Автор: deks
Дата сообщения: 23.04.2013 20:47
Arioch1

LLVM - это и есть back-end, он генерирует конечный код. Просто вместо фронт-энда в виде CLang к нему приделали парсер паскаля. Но вы правы, задачу можно решить разными путями - и патчем backend в LLVM, и генерацией лишнего кода в frontend.. Такая "особенность" нового компилятора delphi - явный признак недоработанности продукта. Надеюсь, поправят!

all

по поводу "with". Ну и хорошо, что начали убирать некоторые спорные фичи языка. Язык должен развиваться, и приходит время отказываться от багажа всяких "исторических" вещей. Вон - Windows тянула-тянула багаж, и дотянула до Windows8. В этом смысле я с Apple более солидарен - они довольно легко хоронят "устаревшие" технологии (carbon, rosetta, ...). По поводу "как это сделать" - я бы сделал refactoring на тему замены with на промежуточную переменную. У ЭМРО же есть парсер, компилятор - они все знают о коде! почему бы не предложить в IDE апгрейд такого кода?

Аналогично со строками: нужна автоматизированная утилита для апгрейда 1-based string кода на 0-based immutable. Чтобы именно компилятор/парсер анализировал использование строк и доступ к ним. И предлагал или автоматический апгрейд, или указывал на "подозрительные" места!

Видимо, в ЭМРО лень делать такой сервис пользователям - и так руками перелопатят код!

Автор: delover
Дата сообщения: 23.04.2013 21:12
deks
Я Вас тоже спрашиваю. Мне интересно все тупят? JCL делала последний коммит в SVN 28 янваля. Вы что считаете XE4 освещщена?


Цитата:
Видимо, в ЭМРО лень делать такой сервис пользователям - и так руками перелопатят код!

Кому лень? Кто деньги зарабатывает, или Вам?
Автор: Eternal_Shield
Дата сообщения: 23.04.2013 21:25
deks

Цитата:
по поводу "with". Ну и хорошо, что начали убирать некоторые спорные фичи языка.

Ничего хорошего. Есть моменты, когда with ничем не заменить. Не буквально, разумеется. Имхо, это намеренное умерщвление языка.
Автор: X11
Дата сообщения: 23.04.2013 21:51
жаль
with иной раз сильно сокращает код
Автор: LadyOfWood
Дата сообщения: 23.04.2013 22:10

Цитата:
Разработано красиво, реализовано сыро как MSDOS 3.5.

MS-DOS нигода не было версии 3.5 deks
deks
With все-таки часть языка и вот убирать все-таки очень спорно.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738

Предыдущая тема: [Delphi XE2] Размер PNG


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.