Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/117: Рейтинг темы: голосов - 117, средняя оценка - 4.64
2 / 2 / 2
Регистрация: 20.01.2015
Сообщений: 70

Почему все так не любят Delphi

24.04.2015, 08:22. Показов 26182. Ответов 324
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Объясните мне пожалуйста почему все так не любят Delphi? Я сам новичок в программировании и как любой другой новичок я озадачивался вопросом "Какой же ЯП начинать учить?" и посещая различные форумы, вопросники, читая разные статейки с советами на данную тему, я был маленько удивлен, что во всех постах выбор Delphi (ну или Odject Pascal, хотя если не ошибаюсь до Delphi уже давненько считается ЯП) даже не рассматривают, там все сводится современным полезностям всяких яв, питонов и тп...А про Delphi вообще не упоминают. Бывали вопросы конкретно по ЯПу для работы с Windows Forms, и тут опять лидируют всякие C# и С++. Решил поковыряться в C# Windows Forms (VS Express 2013), тоже довольно не плохо все там организовано, но вот по сложности самого кода, Delphi будет в самый раз новичку. Написал простенький кликер для онлайн игры на Delphi, трудностей почти не возникло, решил тоже самое реализовать на C# и просто сразу бросил это дело за невозможностью написать "Клик ЛКМ в определенных координатах"...Если в Delphi все решалось одной строчкой, то в c# там целое произведение. Ведь delphi проще новичку получается? Решил глянуть во возможностям писанины для Android OS, для всех остальных ЯПов "в коробке" (надо догоняться всякими Xamarin'ами и dot42) отсутствуют возможности быстро и просто писать такие приложение, в Delphi опять были приятные фичи, с XE5 и выше есть довольно хорошая организация разработки приложений для Android платформы, со своим эмулятором, возможностью "на лету" забросить собранное на свой девайс по USB. Это все опять добавило +++ по моим критериям к Delphi. Единственное что RAD Studio стоит огромных денег (около 200 кусков), это все на порядок дороже всяких Ultimate версий VS. Ребят, может я что-то не понимаю во всем этом, но может мне делфоводы в двух словах расскажут почему же Delphi такой не уважаемый? Да и вообще я очень даже уверен что многие из матёрых тутошних делфоводов смогут реализовать любую задачу на Delphi. По мне это самый достойный инструмент для новичка с кучей готовых компонентов и интуитивно понятным и удобным интерфейсом, а для работы с Windows Forms мне кажется много кому даст прикурить в плане юзабильности! Хотя у меня еще есть большое подозрение что многие кто активно помогает в ветке Delphi сам отдаст предпочтение другому ЯПу, а заходит в ветку Delphi ради фана чтоль))) Знатоки Delphi или ярые противники, внесите пожалуйста ясность в мой разум, я буду очень признателен. Большое спасибо заранее!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2015, 08:22
Ответы с готовыми решениями:

Почему все так не любят Баскова?
Слышал про его планирующийся грандиозный концерт с Кабалье в Лужниках в июне, кому ни скажу- все нос морщат. ну разве что кроме родителей-...

Почему все так не любят tkinter?
Почему, по вашему мнению, не нужно использовать стандартную библиотеку графического интерфейса tkinter? Перечислите конкретные причины,...

[Cocos2d-x] Clion + cocos2d-x почему так не любят друг - друга ? (Mac OS X)
Доброе врем суток уважаемые формучане. Кто имел опыт подружить эти два чуда меду собой, поделитесь пожалуйста опытом. У меня вот какая...

324
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
29.04.2015, 18:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Shamil1 Посмотреть сообщение
Объясните, зачем мне может понадобиться собирать аргументы функции в тупл?
Первоочередная задача кортежа в D - это обеспечение возможностей метапрограммирования нужным сахаром.
Цитата Сообщение от Shamil1 Посмотреть сообщение
И чем плох вариант добавить перегрузку, которая будет принимать такой тупл?
Ничем.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Неужели из контекста не ясен смысл вопроса?
Дык, ошибка будет на этапе компиляции (D - это не C++), если вы засунете real вместо int. У D есть салфетка.
Цитата Сообщение от Joy Посмотреть сообщение
Какая практическая польза от шаблонов, по мне так они код в абсолютно нечитаемое состояние приводят?
Метапрограммирование, обобщённое программирование, gamedev.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Сработает ли второй вызов?
Конечно, сработает. Кто вам мешает это протестировать?
http://ideone.com/x6YTmy
0
Эксперт Pascal/Delphi
2389 / 1301 / 1492
Регистрация: 29.08.2014
Сообщений: 4,669
29.04.2015, 19:08
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Метапрограммирование, обобщённое программирование, gamedev.
да уж, объяснили... из приведенной ссылки ничего не подчерпнул, кроме того, что автору понадобилось зачем-то переименовать через switch стандартные обработчики, мотивируя это тем что пока идет простой можно заниматься рисованием.
1. насколько мне известно обработчик нажатой кнопки вызывается когда нажата кнопка, в другое время рисуй на здоровье.
2. Потоки для чего придумали?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33466 / 21565 / 8249
Регистрация: 22.10.2011
Сообщений: 37,018
Записей в блоге: 12
29.04.2015, 19:15
Dennis Ritchie, а что D предлагает вот по этому поводу, интересно: Собственний тип данных ? Есть решение без классов и прочей лабуды? В стиле
Code
1
type balance is new Integer range -32_000 .. 32_000;
?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
29.04.2015, 20:01
Цитата Сообщение от Joy Посмотреть сообщение
да уж, объяснили... из приведенной ссылки ничего не подчерпнул
Обобщённое программирование готов продемонстрировать лично (только не говорите, что вам что-то непонятно):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uint find(T1, T2)(T1 required_element, T2 array) {
 
    foreach (i, e; array)
        if (required_element == e)
            return i;
 
    return -1;
}
 
void main() {
    import std.stdio;
 
    auto a = [1, 5, 9, 43];
    auto s = ["cat", "dog", "bar", "foo"];
    auto ch = ['a', 'b', 'c', 'd', 'e', 'f'];
    auto longDouble = [45.68L, 456.89L, 1.1L, 2.3L, 9.4L, 89.45L];
 
    writeln(find(9, a));
    writeln(find("foo", s));
    writeln(find!(char, char[])('e', ch));
    writeln(find(89.45L, longDouble));
}
http://ideone.com/mLgVFQ

Цитата Сообщение от volvo Посмотреть сообщение
Есть решение без классов и прочей лабуды? В стиле
Оу, больно. Надо спросить у D-шников - я такого ещё не видел.
Цитата Сообщение от volvo Посмотреть сообщение
?
На каком языке написан ваш код (походу, это Ада)? Если можно, то приведите кусочек полноценной программы с использованием пользовательского типа balance, чтобы я мог немного протестировать эту штуку.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33466 / 21565 / 8249
Регистрация: 22.10.2011
Сообщений: 37,018
Записей в блоге: 12
29.04.2015, 20:33
Какой полноценной программы? Любая программа с использованием арифметических операций подойдет для тестов. Этот тип используется для того, чтобы не дать возможности работать с числами вне заданного интервала. Любые арифметические операции, если результат не попадет в заданный range, вызовут в рантайме Constraint_Error, а если результат известен еще на этапе компиляции - то будет предупреждение:
"warning: "Constraint_Error" will be raised at run time". Причем, я могу запросто сделать, чтобы арифметика была ТОЛЬКО между переменными типа Balance (любая попытка сложить Balance и Integer приведет к ошибке компиляции), а могу смешивать использование Balance с использованием любых целочисленных переменных.

Жду аналога на D
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
29.04.2015, 20:49
Цитата Сообщение от volvo Посмотреть сообщение
Жду аналога на D
нет у них такого

Добавлено через 3 минуты
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Обобщённое программирование готов продемонстрировать лично
Исходник понятен. А если мы ищем -1 как понять что функция отработала, а не вернула код ошибки?

Добавлено через 1 минуту
это явный каст? массив символов автоматически выводится как тип string? По это причине надо явно кастануть ch как char[]. Я прав?
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
writeln(find!(char, char[])('e', ch));
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
29.04.2015, 20:59
Цитата Сообщение от volvo Посмотреть сообщение
Какой полноценной программы?
Ну такой, чтобы я её смог скомпилировать и запустить, например, на http://ideone.com (там поддерживается Ada).
Цитата Сообщение от volvo Посмотреть сообщение
Этот тип используется для того, чтобы не дать возможности работать с числами вне заданного интервала...
Ясно.
Цитата Сообщение от volvo Посмотреть сообщение
Жду аналога на D
Я тоже жду...

Не по теме:

P.S. Для полиморфных вирусов в любом случае лучше всего подойдёт D, ибо я смогу использовать SDC — компилятор-как-библиотека, чтобы писать самомодифицирующийся код. :D


Цитата Сообщение от castorsky Посмотреть сообщение
Исходник понятен.
Лол:
Цитата Сообщение от castorsky Посмотреть сообщение
А если мы ищем -1 как понять что функция отработала, а не вернула код ошибки?
Индекс элемента массива в виде минус единицы! Знаете что, а это круто, Самуил Цукорский! Мой смех прошёл до пяток...
Цитата Сообщение от castorsky Посмотреть сообщение
это явный каст? массив символов автоматически выводится как тип string? По это причине надо явно кастануть ch как char[]. Я прав?
Нет, вы абсолютно не правы. Чтобы люди смогли понять мой код, я всего лишь указал тип для char'ов явно (могу и не указывать).
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
29.04.2015, 21:06
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Индекс элемента массива в виде минус единицы!
Так я не понял что возвращается индекс. Смысл в такой функции? Элемент надо возвращать, а не его индекс.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
29.04.2015, 21:32
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Обобщённое программирование готов продемонстрировать лично (только не говорите, что вам что-то непонятно)
Хм. Вот так продемонстрировал.
Во-первых:
Цитата Сообщение от castorsky Посмотреть сообщение
Элемент надо возвращать, а не его индекс.
Иначе это не find, а position;
а во-вторых:
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
uint
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
return -1
Как это говно вообще скомпилировалось?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
29.04.2015, 21:39
Цитата Сообщение от nullxdth Посмотреть сообщение
Как это говно вообще скомпилировалось?
Даже без предупреждений. Мегаотсостой этот дэ.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
29.04.2015, 21:40
Dennis Ritchie, возвращаешь -1 как unsigned? Да ты красавчик http://ideone.com/M9fmSp
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
29.04.2015, 21:53
Цитата Сообщение от castorsky Посмотреть сообщение
Даже без предупреждений. Мегаотсостой этот дэ.
Просто жесть. Вот это статика, вот это robustness.
Даже динамический SBCL неплохо выводит типы (а на литералах тем более) и чекает в CT по декларациям.
Миниатюры
Почему все так не любят Delphi  
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
29.04.2015, 21:55
Это стандартная функция тип IndexOf()

Индекс гораздо полезнее элемента.
Какая вам польза в получении элемента, когда вы ищете 'c' в строке "akdfjeird"?
Была бы какая-то польза, если бы функция принимала не элемент, который надо найти, а предикат. Но даже в этом случае элемент легко получить по индексу. (В отличии от связанных списков, к которым привыкли в функциональных языках).
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
29.04.2015, 21:57
Цитата Сообщение от Shamil1 Посмотреть сообщение
Индекс гораздо полезнее элемента.
Только в том случае, если у тебя всегда вектор с произвольным доступом и поиск не по предикату. А вообще-то такие ФВП делают обобщёнными и совершенно не обязателен произвольный доступ.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
29.04.2015, 21:59
Только я не понял, какое отношение этот пример имеет к мета-программированию?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
29.04.2015, 22:01
Цитата Сообщение от Shamil1 Посмотреть сообщение
Была бы какая-то польза, если бы функция принимала не элемент, который надо найти, а предикат.
Именно, например, как в CL http://www.lispworks.com/docum... _find_.htm. Круто спроектированный find. Но один прокол всё таки есть у этого find-а.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
29.04.2015, 22:08
Цитата Сообщение от Shamil1 Посмотреть сообщение
В отличии от связанных списков, к которым привыкли в функциональных языках
Это общее заблуждение.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
29.04.2015, 22:12
Цитата Сообщение от castorsky Посмотреть сообщение
Это общее заблуждение.
Что именно заблуждение? Что в ФП предпочитают связанные списки? Что в ИП предпочитают массивы?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
29.04.2015, 22:13
Цитата Сообщение от Shamil1 Посмотреть сообщение
Индекс гораздо полезнее элемента.
Я неточно выразился. Сам виноват. find не должен возвращать индекс.

Добавлено через 39 секунд
Цитата Сообщение от Shamil1 Посмотреть сообщение
Что именно заблуждение? Что в ФП предпочитают связанные списки?
да. как структуры данных можно использовать векторы с доступом O(1).
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
29.04.2015, 22:24
Цитата Сообщение от castorsky Посмотреть сообщение
Так я не понял что возвращается индекс. Смысл в такой функции? Элемент надо возвращать, а не его индекс.
Пришли упоротые лисперы, которые пытаются всех убедить, что лучше вернуть элемент, который требуется найти, чем индекс элемента в массиве. Что ж, это прогресс своего рода, лол! Ну, в таком случае я должен разочаровать бедолаг: предложили ли бы хотя бы возвращать true/false или в крайнем случае указатель на элемент через вариадные переменные, а потом проверять типы данных, чтобы принимать -1 или элемент (т.е. принял зачем-то -1, а потом вывел надпись: "Элемент не найден!"). Лисперы на такое способны.
Может быть, вы попытаетесь оправдаться и объяснить мне: какой толк от возвращённого элемента? Может быть, такую глупость Маккарти придумал или какой-то другой упоротый лиспер?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
auto ref find(T1, T2)(T1 required_element, T2 array) {
    import std.variant;
 
    foreach (e; array)
        if (required_element == e) {
            return Variant(e);
        }
 
    return Variant("-1_fuckLisperam");
}
 
void main() {
    import std.stdio;
    
    auto a = [1, 5, 9, 43];
    auto s = ["cat", "dog", "bar", "foo"];
    auto ch = ['a', 'b', 'c', 'd', 'y', 'f'];
    auto longDouble = [45.68L, 456.89L, 1.1L, 2.3L, 9.4L, 89.45L];
 
    writeln(find(9, a));
    writeln(find("foo", s));
    writeln(find!(char, char[])('y', ch));
    writeln(find(89.45L, longDouble));
    writeln(find(15, a));
}
http://ideone.com/ieFDYr
Цитата Сообщение от Shamil1 Посмотреть сообщение
Только я не понял, какое отношение этот пример имеет к мета-программированию?
Простой пример с метапрограммированием уже есть в этой теме. Это было обобщённое программирование (я про find).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2015, 22:24

Почему партнерские программы и поисковики так не любят сайты о заработке в инете?
почему то везде таким сайтам красный свет, при том, что неважно даже какие способы заработка они описывают или предлагают...

За что так не любят Goto?
Может я такой непонятливый, но объясните кто может - почему у многих не самое чучшее отношение к оператору Goto. Я этого не понимаю, в...

Почему девушки не любят баянистов?
Я - экс-баянист с В/O и небольшим стажем работы в качестве артиста АПП ВДВ РФ. Девушек в моей жизни (физически) не было вообще. Наверное...

Почему девушки не любят программистов?
Вроде программисты обеспеченные, умные, настоящие интеллектуалы, многие следят за своим внешним видом, а некоторые даже занимаются спортом....

Почему любят одних, а женятся... ?
К сожалению или к радости, не все браки свершаются на небесах. Если верить статистике, только 10 из 100 браков заключаются по большой и...


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

Или воспользуйтесь поиском по форуму:
240
Ответ Создать тему
Новые блоги и статьи
Часы электронные
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 Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru