Delphi по сравнению с Разработчиком C++ - Который является Лучшим Выбором для Программиста Java, Делающего Win32

Я делаю собственный плоттер (plot0), который записывает непосредственно в выходной поток char за символом, строка за строкой:

private static void plot0(final int... numbers) {

    final int cols = numbers.length;
    final IntSummaryStatistics stat = Arrays.stream(numbers).summaryStatistics();
    final int max = stat.getMax();
    final int min = stat.getMin();

    final int rows;
    if (min < 0) {
        rows = Math.max(0, max) + ~min + 2;
    } else {
        rows = max;
    }

    for (int i = 0; i < rows; i++) {

        final int val = Math.max(0, max) - i;
        if (0 == val) {

            continue; // do not plot zero
        }

        for (int j = 0; j < cols; j++) {

            final int num = numbers[j];
            System.out.print(
                    0 < num && 0 < val && num >= val
                            || 0 > num && 0 > val && num <= val
                                    ? '*'
                                    : ' ');
        }
        System.out.println();
    }
}

Я внес небольшие изменения в ваш код (переименуйте в plot1), но в основном оригинальное мышление работает.

  1. изменить Arrays.deepToString(tempArray[i]) на new String(tempArray[i])
  2. Двумерный массив не может быть напечатан, вместо него использовать строку char
  3. заполнить нулевые значения ' ' в Arrays.fill(tempArray[i], ' ');
  4. отсутствует пропустить значение 0 из печати, базовая линия видна
  5. конец строки после заполнения всех '*' значений, а не до
  6. значения '*' переопределяют [ 1110], поэтому вы не можете писать напрямую на выход.
<час>
private static void plot1(final int... array) {

    int max = Integer.MIN_VALUE;
    int min = Integer.MAX_VALUE;
    for (final int element : array) {
        if (element > max) {
            max = element;
        }
        if (element < min) {
            min = element;
        }
    }

    if (min < 0) {
        min *= -1;
    }

    final char[][] tempArray = new char[array.length][max + min + 1];

    for (int i = 0; i < tempArray.length; i++) {
        Arrays.fill(tempArray[i], ' ');
        if (array[i] > 0) {
            for (int j = min + 1; j <= min + array[i]; j++) {
                tempArray[i][j] = '*';
            }
        } else if (array[i] < 0) {
            for (int j = min - 1; j >= min + array[i]; j--) {
                tempArray[i][j] = '*';
            }
        }
        System.out.println(new String(tempArray[i]));
    }
}
15
задан MB. 7 October 2008 в 22:57
поделиться

12 ответов

Delphi или Разработчик C++ - это - трудный выбор!

, Поскольку Вы знаете, они в основном очень похожи с точки зрения RAD и IDE.

за и против каждого - независимо от фона - немного похожи на это. Оба совместно используют большой конструктор форм RAD с 2 путями и платформу (VCL), которые идеальны для собственной разработки Windows.

Delphi:

  • ДЛЯ: Многочисленное, активное, восторженное сообщество
  • ДЛЯ: Delphi 2009 много лет является лучшей версией
  • ДЛЯ: Delphi "единицы" заставляет пар источника/заголовочного файла C казаться архаичными
  • ПРОТИВ: Никакое автоматическое разрушение как объекты не оставляет объем, следовательно много 'finally's в Вашем коде
  • ПРОТИВ: Язык может быть 'многословным', который является вопросом вкуса
  • ПРОТИВ: Используя сторонний DLL или библиотеки на других языках (особенно C) требует, чтобы заголовочные файлы Delphi были записаны

Разработчик C++

  • ДЛЯ: Разработчик C++ 2009 является, вероятно, лучшей версией когда-либо
  • ДЛЯ: идиома RAII упрощает управление памятью чрезвычайно
  • ДЛЯ: Шаблоны невероятно полезны и мощны, даже если у Разработчика C++ реализация есть некоторые ошибки с ними.
  • ДЛЯ: Поддержка ПОВЫШЕНИЯ и других современных основанных на шаблоне библиотек (даже при том, что поддержка Повышения не составляет 100%)
  • ДЛЯ: Большой interop с Delphi означает, что большинство компонентов Delphi может легко использоваться.
  • ДЛЯ: Простой в использовании с третьей частью DLLs/libraries с заголовками C/C++.
  • ДЛЯ: C++ может выглядеть лучше на CV, чем Delphi.
  • ПРОТИВ: CB2009 "unicode только" - последствия этого для переносимости кода отличаются и менее хорошо продуманы, чем для Delphi
  • ПРОТИВ: Разработчик C++ база пользователей намного меньше, чем Delphi. Возможно, 20% или меньше.
  • ПРОТИВ: Borland/Inprise почти уничтожил BCB несколько лет назад, и он был только возрожден после серьезных усилий от сообщества. (Однако обязательство Codegear/Embarcadero действительно кажется впечатляющим)
  • ПРОТИВ: Разработчик C++ не является вершиной груды в Codegear.
  • ПРОТИВ: сторонние поставщики компонента не всегда понимают/поддерживают Разработчика C++

, Это об этом. Только для утверждения моего положения я - счастливый пользователь BCB2007/2009 (начиная с BCB5), и я также нечасто использую Delphi. Несколько лет назад, я рассмотрел переключатель от C++ до Delphi, но отсутствие идиомы RAII было одной вещью, которую я нашел трудным достигнуть соглашения с.

22
ответ дан 1 December 2019 в 00:03
поделиться

Пойдите с Delphi, и можно использовать сборщик "мусора" API Boehm, записанный Barry Kelly , таким образом, у Вас может быть сборка "мусора" в Delphi. Barry записал это, прежде чем он пошел для работы на CodeGear как архитектор компилятора. Это действительно имеет проблемы с действительно крупными приложениями и скорее всего не будет работать с 64-разрядным Delphi. Он говорит об этом вполне немного в этом интервью подкаста .

, Даже если бы Вы не используете того собирающего "мусор" диспетчера памяти, я все еще рекомендовал бы Delphi по C++. Единственным преимуществом, которое C++ дает Вам для общей разработки, является изогнутый синтаксис фигурной скобки. Если Вы не будете возражать против синтаксиса Delphi, то для большинства вещей Вы найдете его лучше. У предоставленного Разработчика C++ есть целый Delphi VCL и RTL, таким образом, это не настолько плохо как Visual C++, но я все еще думаю, что Delphi был бы лучшим выбором.

For дополнения Excel (поскольку Вы упомянули в своем комментарии) я рекомендую Delphi по разработчику C++, потому что он имеет лучше поддержку COM (который я полагаю, что Вам нужно для дополнений Excel).

9
ответ дан 1 December 2019 в 00:03
поделиться

Конечно, синтаксис Java больше похож на C++, чем подобный Дельфи, но я думаю, что объектная модель более подобна Дельфи:

  • единичное наследование. Интерфейсы существуют, но больше похожи на COM, чем подобные интерфейсы Java.
  • объекты выделены на "куче" и получены доступ ссылкой

, можно найти статью, сравнивающую эти три языка здесь

2
ответ дан 1 December 2019 в 00:03
поделиться

Если Вы собираетесь сделать большое программирование Windows, изучить C++. Вы выучили бы немецкий язык при подготовке к прохождению во Францию? C/C++ является родным языком Windows API. Контакт со структурами данных WinAPI и вызовами настолько более прост в C/C++. Относительно RAD, я использовал MSVC в течение приблизительно 13 лет, и я могу хлестать вместе приложение для GUI так же быстро как кто-либо использующий редактора GUI Visual Studio.

1
ответ дан 1 December 2019 в 00:03
поделиться

Нет ничего, что я не смог сделать в C++ VCL, который я не мог сделать с Delphi, VCL и почти все компоненты Delphi хорошо работают в Разработчике C++. Так как я программирую и для Windows и для UNIX, C++ является более портативным.

при использовании C++ STL или другая хорошо разработанная библиотека для контейнеров вид сборки "мусора" становится спорным вопросом, и в других отношениях ручной GC не является трудным (каждый быстро изучает хорошие привычки - который необходимо практиковать так или иначе независимо от GC). Пока Вы используете RAII, если это возможно, сохраните свое управление памятью инкапсулировавшим в контейнерах, быть ясными на монопольном использовании объекта и только использовать указатели в качестве способных иметь значение NULL ссылок (все из которых необходимо также делать безотносительно на языке), GC действительно не должен быть проблемой.

2
ответ дан 1 December 2019 в 00:03
поделиться

Одна вещь я забыл упоминать прежде:

С точки зрения стоимости, Вы не делаете действительно потребность для выбора. Купите пакет RAD Studio , и для скромных дополнительных расходов по одному отдельному языку, Вы получаете и Delphi и Разработчик C++ личности в том же IDE.

И, стоит упомянуть, что Разработчик C++, пакет включает компилятор Delphi, и можно писать/добавлять Delphi .pas файлы и включать их как часть проектов C++.

1
ответ дан 1 December 2019 в 00:03
поделиться

Я программирую профессионально в Delphi в течение прошлых 10 лет и имею хорошее знание C++. Я пошел бы к Delphi путем. Синтаксис является намного более простым и управлением памятью также. Тот GC для собственного Delphi, который я не имею, слышал все же... Хотя мне не нравилось много прерывания на Delphi. Сетевой код представил из-за gc.NET, я очень не люблю gcs ;-)

1
ответ дан 1 December 2019 в 00:03
поделиться

"Например, Delphi IDE является полностью долбаным' потрясающий для создания графический интерфейсов пользователя способом WYSIWYG. Я не использовал разработчика C++ IDE, но я был бы действительно удивлен, имеет ли он разработчика GUI, это так же хорошо как Delphi".

На самом деле Разработчик C++ редактор GUI является точно тем же редактором и работает таким же образом. Это фантастически.

.NET имеет огромное количество классов, во многом как Java. C# имеет подобный синтаксис к Java, и из-за огромной библиотеки классов работает справедливо так же. И это - совершенно соответствующая среда к программе в. Но откровенно Delphi является намного более приятным языком, IDE и общей средой для работы с. C# был разработан тем же человеком, который разработал Delphi и "чувствует себя" очень похожим во многих отношениях, не предполагайте, что, потому что Delphi компилирует в собственный код (хотя можно использовать Delphi .NET также) существенно более трудно использовать. Это не, вообще.

Моя персональная рекомендация была бы для Delphi, потому что это - прохладный язык. Однако, если Вы интересуетесь изучением C++, Разработчик C++ является, вероятно, самым хорошим способом, которым Вы могли бы сделать это.

1
ответ дан 1 December 2019 в 00:03
поделиться

Я думаю, идете ли Вы с Delphi, Вы найдете это более легче после несколько раз использования, также это имеет больше сторонней поддержки и некоторые функции, представленные в Delphi, прежде чем Разработчик C++

также прочитал этот блог из экс-Java и теперь парня позади большей части базы данных и работы datasnap в Delphi Steve Shaughnessy, о его опыте о программировании Delphi после 10 лет Java :-) http://blogs.codegear.com/steveshaughnessy/2006/12/03/30193

2
ответ дан 1 December 2019 в 00:03
поделиться

Лично, я думаю, что существуют другие важные факторы кроме различий между языками. Например, Delphi IDE является полностью долбаным' потрясающий для создания графический интерфейсов пользователя способом WYSIWYG. Я не использовал разработчика C++ IDE, но я был бы действительно удивлен, имеет ли он разработчика GUI, это так же хорошо как Delphi.

, Хотя поверхностно синтаксис C++ больше походит на синтаксис Java, объектная модель Delphi на самом деле ближе к тому из Java. Хотя указатели существуют в Delphi в ссылках на объект практики (как те, которые в Java), используются 99% времени. Даже в современном C++, я не думаю, что возможно избежать указателей. Не то, чтобы существует что-то не так с указателями по сути, но на практике....

На личном сообщении, я - главным образом парень Java в эти дни, но я провел 2 года, работая с Delphi и вернусь к нему в heartbeat. Напротив, я имею только очень ограниченный опыт с C++ и предпочел бы чистить туалеты, чем возврат на тот язык :)

5
ответ дан 1 December 2019 в 00:03
поделиться

После работы с Borland C++ и компиляторами C++ начиная с BCC 4.1/DOS и Delphi от 3,0 до 2007 я могу сказать Вам честно, что Вы находитесь в для большого приключения так или иначе. При перемещении от C/C++ в Разработчика Borland и RAD, IDE является существенным сдвигом парадигмы (и кривая обучения) от VC Microsoft ++, C++ и.NET (использовали VC от первого выпуска MS-DOS - бежевые три звонят мини-редакторы связей).

выбором между C++ и Delphi является тот, который я предлагаю, чтобы Вы сделали после того, чтобы намочить ноги на нескольких малых и средних размерных проектах на обоих языках. Я начал программиста C и приблизительно после пяти лет, переключенных на Delphi (V3.0), когда VCL просто сделал Windows, программируя намного легче и более продуктивный.

быть предупрежденным, Delphi является обольстительным языком для программистов, происходящих из других языков как КОБОЛ, ФОРТРАН, VisualBasic, потому что его синтаксис и правила кода осуществляют своего рода дисциплину, которая не допускает один в проблему. Краткость и необработанное металлическое питание C делают это большим системным языком программирования (драйверы устройств, код O/S, встроенное программирование в реальном времени), но в неопытных руках это может укусить Вас.

Разработчик C++ Borland (VCL Delphi, добавленный к компилятору C++), берет многий из резкого края C++ прочь и является моим вторым любимым языком. Так как Borland добавила поддержку.NET обоим языкам существует веский довод для использования Разработчика вместо VC ++ для программирования платформы MS. Хотя C# имеет хорошую сумму 'дружелюбия', встроенного по сравнению с C++, если продвинуто я все еще придерживался бы Delphi или Разработчика, если бы я только начинал.

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

6
ответ дан 1 December 2019 в 00:03
поделиться

Delphi будет намного легче для Вас достигнуть соглашения с, уверенный, что необходимо управлять памятью, но его очень простое

MyObj = TMyObj.Create;

try
  MyObj.DoSomething;
finally
  MyObj.Free;
end

В Delphi, все объекты выделяются на "куче", таким образом, правило очень просто, при создании его, Вы освобождаете его.

C++ с его стеком и "кучей" базирующийся objs означает, что Вы имеете немного больше для изучения и больше объема для того, чтобы попасть в беду.

8
ответ дан 1 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: