Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Результаты опроса: Что лучше?
Delphi 64 24.43%
C# 123 46.95%
Они дополняют друг друга 20 7.63%
Ни один из них 55 20.99%
Голосовавшие: 262. Вы ещё не голосовали в этом опросе

 
 
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497

Delphi vs C#

24.01.2010, 11:31. Показов 82206. Ответов 861
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Я уже давно люблю покодить на делфи(7) и вот решил попробовать на с#.
Тема глупая и затасканная, но все же какие преимущества я получу(и недостатки) с точки зрения любителя.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2010, 11:31
Ответы с готовыми решениями:

Что лучше брать Delphi XE2, Delphi XE, Delphi 7?
Привет форумчане! У меня вопрос: что лучше брать Delphi XE2, Delphi XE, Delphi 7? Как вообще различаются серия Delphi XE, и Delphi 7?

Какие отличия Delphi 5, Delphi 6 и Delphi 7
Кто-нибудь юзал Delphi 6? Если да, то напишите, плиз, его отличия от 5-ой версии (плюсы и минусы) Кстати, никто не слышал ничего о Delphi...

ZipForge для Delphi Xe - интерфейс стал выглядеть как в Delphi 2007
Народ!!! Помоготи!!! Установил компонент ZipForge для Delphi Xe и после этого интерфейс моей программы стал таким, как будто я его в delphi...

861
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
10.06.2019, 21:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Curry Посмотреть сообщение
Вы забыли эту строку вставить в пример.
В общем случае компилятор не знает, есть такая строка или нет. Поэтому компилятор не может оптимизировать этот код использованием rep movsd. Согласны?

Цитата Сообщение от Curry Посмотреть сообщение
Глобальная оптимизация откладывается до линковки.
Я думал, линковщик линкует. Тяжело оптимизировать, когда нет исходного кода.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
10.06.2019, 21:58
Цитата Сообщение от Shamil1 Посмотреть сообщение
В общем случае компилятор не знает, есть такая строка или нет.
Чего это он не знает, что на строчку выше?
Цитата Сообщение от Shamil1 Посмотреть сообщение
Тяжело оптимизировать, когда нет исходного кода.
исходный код компиляторы и не оптимизируют.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
11.06.2019, 01:49
Цитата Сообщение от Curry Посмотреть сообщение
Чего это он не знает, что на строчку выше?
А если нет на строчку выше, может компилятор быть уверен, что нигде нет? Тут ведь как в анекдоте про таксиста, который сначала проезжал на красный ("Спокойно, я джигит"), а потом на зелёный затормозил ("А вдруг там какой-нибудь джигит едет"). Есть у меня функция с названием CopyArray и этим циклом... а компилятор не имеет права её оптимизировать, так как вдруг какой-нибудь джигит решит её использовать для заполнения массива одним значением.

Цитата Сообщение от Curry Посмотреть сообщение
исходный код компиляторы и не оптимизируют.
Ну попробуй скомпилировать вот эти два файла по отдельности, а потом слинковать, используя стандартный микрософтовский компилятор:
C++
1
extern(C++) void doesNothing() {}
C++
1
2
3
4
5
6
7
extern(C++) void doesNothing(); 
 
void main() {
    for (ulong i = 0; i < 1_000_000_000; ++i) {
        doesNothing();
    }
}
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
11.06.2019, 11:04
Цитата Сообщение от Curry Посмотреть сообщение
Чего это он не знает, что на строчку выше?
Компилятор может использовать только безопасную оптимизацию. То есть, функция после оптимизации должна выдавать такой же результат для всего диапазона входных данных. Включая случай, когда dst == src + 1.
Вообще, указатели часто выступают в роли блокировщиков оптимизации. Поэтому языки, использующие указатели, в общем случае хуже оптимизируются. (Для решения проблемы в С99 добавлено ключевое слово restrict)

Цитата Сообщение от Curry Посмотреть сообщение
исходный код компиляторы и не оптимизируют.
Оптимизатор работает неким специальным представлением кода (обычно в виде дерева). Получить такое представление по исходному коду легко, а вот по машинному коду весьма проблематично (фактически, необходимо декомпилировать в язык высокого уровня).
Оптимизаторы исходного кода тоже существуют (source to source optimization). Причём, они могут не просто ускорить отдельный кусок кода, а улучшить асимптотику программы. Например, заменить наивный алгоритм эффективным. Но такая оптимизация доступна не для всех языков. Я слышал, что для Лиспа есть такие оптимизаторы. Для С++ написание такого оптимизатора весьма проблематично, так как он слишком "гибкий" (программы на С++ плохо подходят для формального анализа).
Оптимизация во время линкования тоже есть (link time optimization). Хотя возможностей для оптимизации на этом этапе довольно мало, так как работают они с машинным кодом. Хотя с приведённым выше примером (doesNothing) такой оптимизатор должен справиться.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.06.2019, 08:11
Цитата Сообщение от Shamil1 Посмотреть сообщение
Получить такое представление по исходному коду легко, а вот по машинному коду весьма проблематично (фактически, необходимо декомпилировать в язык высокого уровня).
А еще легче по AST, которое и оптимизирует компилятор.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Включая случай, когда dst == src + 1.
ну и че? какие проблемы с rep movs то? вообще постфиксные операторы ++ и -- и арифметика указателей были добавлены в С именно потому что *b++ = *c++ ассемблируется в эту инструкцию напрямую (ну на момент добавления - в ее аналог на PDP) . si и di точно такие же указатели и точно так же инкрементируются/декрементируются после копирования.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Поэтому языки, использующие указатели, в общем случае хуже оптимизируются.
А языков не имеющих указателей не существует.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
13.06.2019, 10:31
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А еще легче по AST, которое и оптимизирует компилятор.
Получить такое представление по исходному коду легко, а вот по машинному коду весьма проблематично (фактически, необходимо декомпилировать в язык высокого уровня).

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
ну и че? какие проблемы с rep movs то?
В С++ компилятор не может использовать векторные инструкции для оптимизации этого кода, поэтому такой же код на С++ будет работать медленнее.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А языков не имеющих указателей не существует.
Вы поняли, что я имел ввиду, а спорить о терминологии не вижу смысла.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
13.06.2019, 10:46
Цитата Сообщение от Shamil1 Посмотреть сообщение
олучить такое представление по исходному коду легко, а вот по машинному коду весьма проблематично (фактически, необходимо декомпилировать в язык высокого уровня).
Это вы сами выдумываете как якобы оптимизация выполняется.
https://habr.com/ru/company/enterra/blog/250199/
Остальное (про векторные инструкции) тоже выдумали.
0
Эксперт .NET
 Аватар для Usaga
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,856
13.06.2019, 10:59
Так и не понятно, чем же дело-то кончилось. Delphi или C#?
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
13.06.2019, 11:07
Цитата Сообщение от Usaga Посмотреть сообщение
Так и не понятно, чем же дело-то кончилось. Delphi или C#?
Fulcrum_013 же вам ясно разъобяснил что C#, это Delphi который испортили приделав к нему GC. Что вы ещё хотите?
0
Эксперт .NET
 Аватар для Usaga
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,856
13.06.2019, 11:10
Curry, а почему C# существенно распространённее дельфей, если он всего лишь испорченная поддерка?
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
13.06.2019, 11:19
Usaga, в бекенде существенно распространённее пых. Он лучше C# ?
Питон тоже распространённее C#. Посмотрите для разнообразия кобол - он тоже в определённых областях распространёнее.
Думаете там есть что то заточенное под бухучёт и банки? Нет. Там вообще ничего нет. Вы думаете что кобол лучше C# ?
0
Эксперт .NET
 Аватар для Usaga
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,856
13.06.2019, 11:23
Цитата Сообщение от Curry Посмотреть сообщение
в бекенде существенно распространённее пых. Он лучше C# ?
Распространённее за счёт чего? Конструкторов и CMS? Мне кажется это такое себе сравнение.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.06.2019, 11:24
Usaga, К примеру потому что дельфи это инструмент архитекторов, способных разработать в одиночку крупную, а небольшой группой сверхкрупную информационную систему, а C# - неучей которых толпа нада на то чтобы пару форм с примитивным CURD до кучи слепить. Т.е. по банальной причине - 90% в индустрии не квалифицированные, а соответсвенно не инструменты профи инструменты типа Дельфы/Билдера осилить не в состоянии, ни тем более осилить задачи тех масштабов для которых эти инструменты нужны. Среди же квалифицированных разрабов в своей нише дельфа/бидер конкурентов/аналогов вообще не имеет.
Кстати так о птичках по исходной задумке они должны были лежать в одной коропке как инструменты разного назначения. Исходное название winforms - С# Builder. Только оно настолько ущербное получилось что шарп вообще в эту коробку ложить отказались а Delphi.NET после первого же релиза из оной каропки выбросили.
0
Эксперт .NET
 Аватар для Usaga
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,856
13.06.2019, 11:27
Fulcrum_013, кто вам сказал, что на C# архитекторов нет, способных на серьёзные свершения? Вы сами опросы и исследования проводили?

Добавлено через 1 минуту
Цитата Сообщение от Curry Посмотреть сообщение
в бекенде существенно распространённее пых. Он лучше C# ?
Если такую логику развивать дальше, то ассемблер распространённее вообще всего вместе взятого, ибо, в конечном итоге, всё в машинные инструкции и переводится. Распространённость за счёт CMS'ок и разного рода конструкторов в счёт можно не брать.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
13.06.2019, 11:28
Цитата Сообщение от Curry Посмотреть сообщение
Это вы сами выдумываете как якобы оптимизация выполняется.
Что конкретно я выдумал?

Цитата Сообщение от Curry Посмотреть сообщение
Остальное (про векторные инструкции) тоже выдумали.
Что конкретно я выдумал?

Цитата Сообщение от Curry Посмотреть сообщение
Это вы сами выдумываете
Это вы сами выдумали, что я что-то выдумал.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.06.2019, 11:36
Цитата Сообщение от Shamil1 Посмотреть сообщение
В С++ компилятор не может использовать векторные инструкции для оптимизации этого кода, поэтому такой же код на С++ будет работать медленнее.
С каких пор не может уточните?
Лично я перестал ассемблерные вставки использовать году эдак в 97-ом когда увидел в листинге циклы копирования замененные на rep movs.

Добавлено через 3 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
если он всего лишь испорченная поддерка?
Это не подделка. Это неудачная попытка прикрутить к технологии визуальной разработки язык с GC от тех же людев которые и дельфу соорудили. Причем далеко не первая. Перед этим были попытки с явой. Но по ходу последняя. Потому что если человек не может понять почему GC не нужен, то о каком вообще осмыслении задач того уровня который позволяют решать эти инструменты может вообще идти речь?
0
Эксперт .NET
 Аватар для Usaga
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,856
13.06.2019, 11:37
Fulcrum_013, но C# не технология визуальной разработки. Это не игрушечка для детей.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
13.06.2019, 11:38
Цитата Сообщение от Usaga Посмотреть сообщение
Если такую логику развивать дальше, то ассемблер распространённее вообще всего вместе взятого
Не ассемблер, а машинные инструкции, вы хотите сказать. Так от них никуда не денешься. А CMS могли бы делать на C#, но распространены на пыхе.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Что конкретно я придумал?
Что компилятор С++ оптимизирует хуже компилятора С, что он оптимизирует только в пределах исходного файла, что он не может генерировать векторные инструкции.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
13.06.2019, 11:43
Цитата Сообщение от Shamil1 Посмотреть сообщение
Вы поняли, что я имел ввиду, а спорить о терминологии не вижу смысла.
Индекс элемента массива - это тоже указатель. Только в локальном адресном пространстве массива. Ассициативный ключ - тоже указатель только с гораздо более сложным алгоритмом разыменования. И т.д. Указатель есть тензор представляющий адрес ячейки памяти. От смены адресного пространства (системы отсчета) меняется только значение и алгоритм разыменования, но не суть указателя.
0
Эксперт .NET
 Аватар для Usaga
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,856
13.06.2019, 11:43
Цитата Сообщение от Curry Посмотреть сообщение
Не ассемблер, а машинные инструкции, вы хотите сказать. Так от них никуда не денешься. А CMS могли бы делать на C#, но распространены на пыхе.
Именно ассемблер. У PHP была фора в несколько лет и возможность крутиться на копеечных хостах с линуксом. Занятая таким образом позиция сама по себе уже не рассосётся, конечно же. Так, что это не заслуга удобства этого языка, а того, что другого на тот момент вообще ничего толком не было.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2019, 11:43

Какова разница работы одного кода в Delphi 7 и в Delphi XE5?
Почему приложение состоящие из одинакового кода, но компилируемое в разных средах работает по разному? Есть клиент-серверное приложение,...

где найти delphi c компилятором? и с чего начинать программирование в delphi?
здравствуйте, вот начинаю изучать delphi с чего начинать лучше?

Почему функция работающая в Delphi 7 не работает в Delphi 2007 и в 2009 ??
Данный код работал нормально в D7: procedure TForm1.Button1Click(Sender: TObject); begin ShowWindow(Application.Handle, 0); end;...

Переписать часть кода с Delphi на ассемблер (ассемблерные вставки в Delphi)
Добрый вечер. Нужно сделать ассемблерные вставки в программе. Первый раз столкнулся с таким заданием, в языке ассемблера почти ноль....

Как в Lazarus сделать интерфейс Delphi 2006 вместо Delphi 7?
Добрый вечер! Подскажите пожалуйста, как в Lazarus сделать интерфейс Delphi 2006 вместо Delphi 7? Т.е. чтобы окна были прикрепленные, а не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
720
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru