Блог пользователя bookofsky

Автор bookofsky, 13 лет назад, По-русски
Здравствуйте, я не так давно начал с нуля заниматься программированием, сначала пробовал на pascal, сейчас вот изучаю Delphi. Но, недавно узнал, что и Delphi и Pascal используются все меньше и меньше, на каких либо серьезных олимпиадах и соревнованиях. Поэтому хочу спросить у Вас совета, стоит ли мне дальше изучать Delphi и программировать на нем, или Вы посоветуйте мне другой язык? C++ или Java например...
Жду Ваших советов, с уважением Алексей Быковский.
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
Конечно начинай учить C++. Когда достаточно хорошо его изучишь, можно будет безболезненно переходить на Java или C#.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится
    Не пытаюсь начать холивар, но мне это напомнило сегодняшнее с бора:
    С автомобильного форума, выбор первой машины:

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

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Не надо С++ сравнивать с русской, так сказать, машиной.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +4 Проголосовать: не нравится
        Я на нем олимпиады овер 5 лет писал, мне можно
        • 13 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится +25 Проголосовать: не нравится
          Ferlon, перелогинься
          В принципе, логично :) Только всё равно на вкус и цвет все фломастеры разные. Мне лично больше нравится на олимпиадах использовать C++, а не Java.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            вспомнилась забавная картинка, когда сидят два прогеры, едят фломастеры, и один говорит,мол,  а все-таки на вкус ИЛИ цвет=)))
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А не могли бы Вы мне еще посоветовать какую нибудь литературу для начинающего программиста или сайт какой...
Ну и в частности, для начала работы с C++
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Вопрос в том, для чего надо эти языки.

Если речь идет об олимпиадах, то там используется мало возможностей языка. 

Намного больше времени надо, чтоб выучить значительное количество алгоритмов, чем для того, чтобы научиться кодить алгоритмические задачи на С++ или Java.

Если же речь идет о планах на разработку "крутых проектов", то языки, действительно, надо основательно освоить.

Из языков лучше всего на С++ сейчас освоиться, после него другие должны пойти легко, как правильно подметил Jokser.

  • 13 лет назад, # ^ |
      Проголосовать: нравится -23 Проголосовать: не нравится
    Ога :-)
    Пока до конца вкуришь C++ все остальные уже вовсю будут фигачить задачи на Java :-)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      До конца не надо. Зная паскаль я выучил необходимый минимум по C++ за неделю. А потом уже с помощью cplusplus доучивал непонятные мне детали.
    • 13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Обычно наоборот. Решение ко многим задачи авторы бывает предполагают на С++, и не задумываются об остальных языках. В итоге на Java часто решать сложнее.

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я вообще планирую заняться спортивным программированием.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      В C++ (и в Java тоже вроде есть) есть структуры, позволяющие быстро работать с данными. В паскале их бы пришлось писать ручками. Иногда бывают задачи, в которых 15 строк кода на C++ и 100 строк на паскале. В этом плане C++ выигрывает просто по скорости написания.

      С другой стороны, замечу, что tourist (двухкратный чемпион мира по программированию) использует как раз delphi, при этом показывая удивительную скорость написания. Так что, видимо, не такой уж это принципиальный вопрос.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ну да, действительно, кто на чем выучился, какой язык изучил лучше, на том и работать надо...тот и лучше наверное, но так как я еще не один язык программирования хорошо не изучил, то вот на основании ваших советов я и хочу определиться, на изучении какого я зыка мне остановиться и заняться серьезной работой с ним.
        • 13 лет назад, # ^ |
            Проголосовать: нравится +19 Проголосовать: не нравится

          Программируйте с использованием языка, а не на языке.

          Стив Макконнелл.

          Лучше знать несколько языков. И в работе пригодится (чем больше знаете языков, тем выше шансы попасть туда, куда хочется, и тем больше выбор возможных вариантов), и на олимпиаде бывает так, что приходится переписывать программу на С++ с Java только потому, что там оно быстрее работает. Особенно если что-то проталкиваете. Ну а начать, соглашусь с постами выше, лучше с С++, ибо воистину.

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Java, как мне кажется, всё-таки ближе к Pascal, чем C++ - указателей нет, нормальные строки и функции для работы с ними, строгая типизация.
Когда я переходил с Pascal на C++ я наткнулся на множество неочевидных моментов - например, в чём разница, делать массив глобальным или локальным, почему нельзя складывать C-style строки char* и пр. радости.
С другой стороны, на олимпиадах иногда делают отдельный Time Limit для Java - это о чем-нибудь, да говорит. Она более громоздкая (чего стоит только public static void main(String[] args) throws Exception), но в ней есть, например, BigInteger. В принципе, в Java тоже есть какие-то неочевидности.
Так что выбирать Вам. Резюмирую: Java - медленнее, громоздкая, меньше (возможно) странных вещей. C++ - быстрый, программы короче, но есть множетсво допустимых при компиляции ошибок в логике программы (особенно при переходе с Pascal, я, например, постоянно путал = и ==).
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    По поводу того, что Java громоздкая. Надо понимать, что никакой человек в здравом уме и трезвой памяти не набирает все символы, которые в итоге оказываются в его программе. Начиная с 10й идеи автокомплит просто жжот синем пламенем - я думаю, что я набираю в среднем около 30% своего кода, остальное автокомплитом (и это до процессинга плагином, конечно). В итоге я имею мнемоничные имена переменных at no cost. Замечу, что последний срм, который был по сути typing contest, я выиграл при том, что не владею техникой слепой печати
    • 13 лет назад, # ^ |
        Проголосовать: нравится +9 Проголосовать: не нравится
      Мне кажется, что если в языке 70% кода нафиг не требуется (если это не имена переменных для понимания кода через 5 лет), то этот язык вполне можно назвать громоздким. По этому поводу мне очень нравится питон - никаких темплейтов. Может быть, кроме from ... import *.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        А что значит "не требуется"?
        • 13 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится
          Дополняется автокомплитом по первым двум буквам (тут не всегда, но и не редко)/лежит в темплейте/угадывается в 95% случаев, если написать короче:
          System.out.println(x); // Java
          println(x); // Pascal
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Ну, у меня это давно out.println(x), положим
            А теперь представим, что нам вместо вывода напрямую в файл надо выводить в строку вдруг. В Java я просто переменную out вместо new PrintWriter(System.out) сделаю new PrintWriter(new StringWriter()). А на паскале я буду перелопачивать весь код
            • 13 лет назад, # ^ |
              Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
              А в С поставить s перед printf ^_^
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Поставить s перед каждым printf и вставить строку, куда пишешь. Причем с нужного индекса
                • 13 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится
                  В таком случае, стоит использовать потоки, там ровно как в Java. Интересно, кто у кого эту идею украл позаимствовал.
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              "PCMS2 разрабатывался, чтобы запускать ракеты. А на нём почему-то решили проводить контесты."
              Согласен, в плане абстракций и пр. Java нет равных. Но когда время жизни кода - пару часов, и механизм взаимодействия фиксирован с самого начала, это не требуется.
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                У меня в библиотеке есть куча кода и его время жизни не 2 часа.
                • 13 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится
                  Тогда, конечно, другое дело. Если хотим максимально адаптивный код - Java-Java-Java.
                  • 13 лет назад, # ^ |
                      Проголосовать: нравится +5 Проголосовать: не нравится
                    C#-C#-C# по-хорошему, но он везде хреново поддерживается к сожалению
                    • 13 лет назад, # ^ |
                        Проголосовать: нравится 0 Проголосовать: не нравится

                      На кодефорсе еще куда ни шло C#. Думаю на следующем контесте на C# тут надо всех укатать :о)

                      • 13 лет назад, # ^ |
                          Проголосовать: нравится 0 Проголосовать: не нравится
                        Если тут и на топкодере будет нормальный >=4 шарп, то я подумаю о переходе. Правда только если получиться переписать плагин. Надеюсь у студии человеческий интерфейс для плагинов
          • 13 лет назад, # ^ |
              Проголосовать: нравится +3 Проголосовать: не нравится
            В паскале - Writeln :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Короткий (узкий) код не только набирать легче, но и просматривать и отлаживать тоже. Соответственно, интересуют преимущества Java при отладке (не сомневаюсь, что они есть).
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Мнемоничные имена переменных at no cost
        А узость кода достигается автопереносом по 120 символов. Ну и вообще, у меня что дома, что на работе 24 мониторы :)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Конечно, есть: например, проверка на вылет за границы массива и невалидные указатели.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Спасибо Егор