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

Автор AlexSkidanov, 14 лет назад, По-русски

Сейчас читал сообщение в блоге Alex_KPR про Казань и удивился тому факту, что ребята пишут в dev_cpp.
Среды разработки - это интересная тема. Если в случае с вопросом "почему вы используете тот язык, который используете" ответ "привык" будет дан 90% респондентов, то в случае со средой разработки это кажется как минимум глупым - стоимость перехода на другую среду в сотни раз ниже стоимости перехода на другой язык. Значит, выбирая среду, человек чем-то руководствуется.
Если забыть на секунду про финал, где надо работать под Linux, а, следовательно, и выбор совершенно другой, сосредоточимя на средах, доступных для Windows. При этом рассматриваем исключитеьно с точки зрения "кодячить олимпиадки".
Для Java есть несколько сравнительно равных сред - Eclipse, IntellijIDEA, NetBeans - у каждой есть фанаты, которые с пеной у рта будут доказывтаь, что другие две гавно, я работал во всех трех постольку поскольку, и больше работал в Eclipse, потому что это среда на финале. Я не нашел заметного преимущества какой-то из этих IDE для себя, но я и не так чтобы сильно много хотел.
Для C++ я вегда работал в MSVC. Я пытался работать в MinGW, и один раз даже писал контест из Dev-CPP. Может быть у меня были старые версии или кривые руки, но ни ту ни другую я не смог заставить в режиме отладки показать мне содержимое вектора. Так как решение на олимпиаде обычно содержит десятки STL-контейнеров, невозможность отлаживать STL формально для меня равна факту отсутствия отладчика в среде. Кстати, та же проблема существует и в Eclipse CDT, но отладчик в CDT - это отдельная тема. Мы на финале пользовались исключительно Debug Output :о)
Поэтому для меня объективно лучше MSCV. Любой важный для меня старт - отборочные или SRM (срм влияет на рейтинг, а я люблю манчить), я всегда пишу и буду писать из MSVC, потому что на важном старте возможность быстрой отладки для меня критично важна - как бы я не был крут, я все равно буду ошибаться и мне нужен быстрый способ ошибки отловить.

Другой вопрос, когда я пишу для удовольствия - открытые кубки, тимус, сборы. Это интересный момент - мне не приятно писать из студии :о) По ряду причин. Мне не нравится ее перформанс - студия, как и почти любая среда разработки, немного притормаживает - это не критично для работы, но это бееесит. Вторая причина - не очень удобное управление проектом - мне не очень нужен проект для олимпиадки, ведь на олимпиаде единица измерения - это один файл, а не проект. Мне не удобна любая среда разработки, потому что мне не нужен проект, мне нужно уметь быстро переключаться между двумя файлами, над которыми я работаю. Более конкретно - допустим я пишу контест и работаю над двумя задачами (допустим по одной тупняк, я переключился на другую, и периодически меня осеняет, я возвращаюсь к первой, вношу поправки, вруню опять, переключаюсь на вторую, кодячу, меня осеняет, и по циклу - пример редкий, но возможный. Другой пример - когда вы работаете над задачей и над генератором тестов для этой задачи чтобы отловить TLE). В студии мне надо убрать один файл из проекта и добавить другой. Это не удобно и требует очень много лишних действий.
Другая проблема - в MSVC я могу писать только на C++, мне надо переключиться в другую среду, чтобы написать задачу на Java. Надо ли говорить, как работает не очень быстрый компьютер, когда на нем запущено два мамонта-серыд? А старты для фана я всегда пишу на обоих языках, а когда есть поддержка C#, то на всех трех, потому зацикливаться на одном языке не интересно.
Поэтому я для фана пишу в... FAR Manager :о) После установки Colorer и настройки компиляции явы, шарпа и С++ по Enter FAR становится невероятно удобной средой. Приведу причины:
1. Быстрое переключение между задачами - вам надо просто перебежать от файла к файлу в FAR. Учитывая разницу в скорости FAR, который все действия выполняет моментально, и любой среды, которые все-таки притормаживают, в FAR переключиться между задачами одно удольствие.
2. Быстрая смена языка - я могу писать на любом языке, компиляция настроена для всех трех.
3. Не надо коментировать вывод. Формально, когда я работаю в студии (и я думаю многие так делают), я комментирую перенаправление выходного файла, потому что в студии не удобно смотреть каждый раз вывод в файл. Она еще назойливо спрашивает "файл обновился, перегрузить файл" - это вообще бесит. Поэтому я просто отключаю перенаправление. Надо ли говорить, сколько раз в жизни я забывал убрать коментарий и отправлял решение без перенаправления :О) В FAR я просто не убираю перенаправление - там я все равно при компиляции нахожусь в папке и могу сразу посомтреть вывод.
4. Использование экрана - редактор в фаре дает в ваше распоряжение весь экран. В студии конечно можно убрать все окна, но это не тоже самое - в FAR при этом все инструменты остаются доступны. Если я в студии уберу Solution Explorer - это будет копыто. Фар показывает больше кода, и это удобно.
Минусы тоже есть, и самый главный из них - отладчика-то нет :о) Приходится использовать Debug Output. Есть люди, которые говорят, что используя Debug Output могут отлаживать не медлененее чем я в студии. Это бред сивой кобылы :о) Сравнивать крутой отладчик и Debug Output нет смысла - второй всегда будет заведомо медленнее.
Кроме того, поначалу немного бесило отсутствие IntelliSence, но это нафиг не надо, когда языки уже все позубрил достаточно хорошо. Это критично, если Java - не основной язык ,но надо закодячить что-то на длинную арифметику, так как в этом случае можно не знать на память какие-то вещи, которые автодополнение заполнит. Но после пары лет кодячанья это нафиг не надо, потому что все итак знаешь.

So, this is my story :о)
Немного не объективной статистики. В петрозаводске доминирующее большинство команд писало в FAR когда я был там последний раз. Бурундуки, Орел с Жуковым, и многие другие. Не все, конечно, но реально очень многие.
В Ижевске на сборах - где даются задачи из ПТЗ, но приезжают топ2 команды, в FAR не писал вообще никто :о)

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

  • Проголосовать: нравится
  • +2
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я тоже очень много использую Far. В дополнении к колореру ставлю на него еще EditCompletion и настраиваю дополнять слова по tab. Получается крайне удобно.

По поводу сред. Если я пишу на Java, то использую IDEA. Но обычно на контестах я на Java не пишу, т.е. в основном использую IDEA для не-олимпиадного программирования. Если я пишу на С++, то скорее это как раз олимпиадный код. В соревнованиях я участвую редко, и обычно это подготовка задач и т.п. В таком случае я использую Far и согласен с автором. Хочется добавить, что использование Far'а на мой взгляд повышает технику программирования, стимулирует к написанию кода без багов, и т.п.

На SRM-ах я использую ... Borland Builder 6. Видимо по следующим причинам: я им начал пользоваться еще когда все писали на олимпиады на Delphi и немного привык, он быстро запускается, в нем есть технология CodeGuard, которая очень много чего проверяет в рантайме (например, выход за границы стат. масива). Лично для меня такая проверка важна.

По поводу переключения между задачами (при использовании IDE) обычно использую концепцию "проект на задачу" (или "папка на задачу" если пишу в FAR-e). Современные компьютеры позволяют держать несколько пару-тройку открытых сред, тем более что некоторые среды запускают одно приложение (процесс) в таком случае. Удобно, что не путаются входные-выходные файлы.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Есть люди, которые говорят, что используя Debug Output могут отлаживать не медлененее чем я в студии.

Задачка на сообразительность: курсор выполнения стоит перед кодом vv.push_back(foo(pq.top())); и что надо сделать, чтобы зайти в foo? А то Microsoft скромно предлагает нам протестировать и их реализацию STL тоже (а мы хотим?).

Сравнивать крутой отладчик и Debug Output нет смысла - второй всегда будет заведомо медленнее.

Выделено полужирным, for great justice

Когда в последний раз писал олимпиаду в среде Borland C++ Builder, ощутил невероятную лёгкость. Не знаю, как это было настроено, но среда задала вопрос: "создать для вашего cpp файла проект с настройками по умолчанию?"

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я согласен с тобой и с Мишей, что BCB не плохая среда. До университета я в принципе только в ней работал, и это было круто. В ней есть свои плюсы, например она лучше показывает при отладке значение переменных, когда наводишь мышку (если я все верно помню).
    Проблема в том, что BCB6 заметно устарел, и для каких-то других целей его покупать бессмысленно, а покупать его только для олимпиадок - это дороговатая роскошь. Вариант использовать пиратское ПО я не рассматриваю в принципе.

    Студия же есть бесплатная - Express, которой хватает для олимпиадок. Это плюс в пользу студии vs BCB6 :о)
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Для студентов даже полную студию можно вроде как вполне официально добыть вот тут: http://dreamspark.com/

      Но для контестов в общем-то она наверное и не нужна.  
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Брекпоинт на foo и F5?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    > vv.push_back(foo(pq.top()));

    либо как сказал FatalErr, либо, что быстрее (без всяких брекпоинтов) - встаем на первую строку Foo и Ctrl+F10
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      А если не перемещаясь по коду, то F11, Shift+F11, F11
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

dev-cpp - очень неплохая "олимпиадная" среда разработки. В ней нет навязчивых проектов, долгих запусков, работающих с вероятностью 50% обновлений аутпута (как бывает, скажем, у MSVC). Не нужно добавлять и удалять файлы при смене задач, как было описано выше. 4 года я в dev-cpp и никогда на неё не жаловался.

Главный аргумент против dev-cpp - её неумение ставить отступы. Это легко лечится настройками редактора, просто снимаем галочку с "умной" табуляции.

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Вы какую версию dev-cpp используете? Та, что у меня (4.9.9.2) часто падает при отладке, так что я ей и не пользуюсь практически.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      именно 4.9.9.2 :)

      я использую исключительно debug output, поэтому подобных затруднений не испытываю

      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        А если важный старт (скажем полуфинал) и не работает поощрительная задача - дебажить ее текстовой отладкой? :о)
        Для важных стартов, имхо, отладчик нужен обязательно.

        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Не нужен. Отладчик развращает как раз и мешает думать головой.
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          для утешительной задачи будет достаточно пары строк debug output

          на написание "for(int i=0;i<n;i++) cout<<i<<": "<<a[i]<<endl;", компиляцию и запуск уйдёт не намного больше времени, чем на копание в отладчике

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ты делаешь отступы?! Давно я не видел, как ты программы пишешь =)
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Тема заинтересовала :)
Уже где то 2 года для олимпиадного программирования использую связку 'Total Commander' + 'notepad++'. Попробую вкратце перечислить плюсы и минусы, некоторые из которых будут пересекаться с приведенными выше.
+:
1. Папка с задачей состоит из 4ех файлов - исходник, бинарник, входной и выходной файлы. Соответственно папка всего контеста - из набора папок с задачами.
2. Абсолютно всё управление ( создание папок, файлов, компиляция, переключение между файлами в блокноте, execution и тд) возложено на горячие клавиши. Это очень быстро и удобно. При этом для работы с одной задачей (кодить, запускать, смотреть вывод) вообще не требуется покидать блокнот.
3. Имя входного/выходного файла нужно писать только однажды. После чего выделяем это имя в тексте и жмем Ctrl+shift+F8 - и этот файл уже создан и открыт в блокноте :)
4. Стимулирует искать ошибки глядя в код, а не ковыряясь в отладчике.
5. Вся эта связка является portable, и запускается прям с флешки (компиляторы с блокнотом запихал в папку Total Commander)
-:
1. Как сказано Александром, нет дебаги :) приходится писать кучу всякого вывода, и потом не забывать его отключать.
2. Нет возможности узнать код возврата в случае аварийного завершения. Опять таки приходится втыкать всякий вывод чтобы понять, где же свалилась прога (частично лечится с помощью assert).
3. Суммируя 1 и 2, на поиск некоторых дибильных ошибок уходит много времени.
4. Нет Java (впрочем можно и её настроить, наверно :).
5. Нет возможности использовать на официальных соревнованиях.

С плюсами и минусами всё. По поводу FAR. Сначала я пытался для этих целей настроить именно Far, а не Total Commander. Но рассмотрев кучу всяких плагинов (некоторые еще и конфликтуют друг с другом), я так и не смог в полной мере достичь нужной мне функциональности (уже точно не помню, чего же именно мне не хватало в этой функциональности).
    Недавно вот узнал про наличие в студии Call Stack :) И не долго думая переписал assert так, чтобы на нем останавливался отладчик. Т.е. если что то падает на assert (при умелом использовании это самая частая ошибка), то можно узнать не только номер строчки, где находится этот вызов ассерта, но и всё состояние проги на этот момент. А на мой взгляд самое главное назначение дебаги именно в этом - рассматривать значение переменных в "предсмертном" состоянии программы. Так что с недавних пор пишу задачки преимущественно в студии. А вот для создания своих собственных задач (написание чекеров, генераторов тестов и тд) описанная связка остается незаменимой.
    Вообще в плане удобства написания и отладки из известных мне сред больше всего нравится Eclipse SDK. Впрочем это в некоторой мере относится к языку программирования Java, его возможностей, а не к самой среде. Но не перехожу с C++ на Java только по той причине, что программы на Java безнадежно проигрывают по времени (зачастую и по памяти) тем же программам, написанным на C++. А в условиях реального соревнования писать одно и то же решение сначала на Java, а потом на C++ (по причине TLE), не является хорошим тоном...
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Oтвет на вопрос такой же как и в случае самой крутой ОС, машины, телефона...
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я и не жду, что все сойдутся на едином мнении. Но хочется послушать мотивацию :о)
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Моё мнение - почему нельзя писать в среде, хотя бы по причине более адекватного редактора? :)

Да и дебаг спасает при необходимости. На тренировках можно просто не разрешать себе пользоваться отладчикам, если это настолько волнующий момент :) Я думаю, из присутствующих здесь контролировать свои действия могут все ;)))


Я пользуюсь Visual Studio. Eclipse знаю не очень, пока от него только раздражение и как следствие отсутствие желания изучения :) Приходится частенько работать в Eclipse-производной ZendStudio, поражает обилие идиотских, по-другому не скажешь, багов. Не знаю, правда, идут ли они от ядра Eclipse или это уже качество мануфактуры Zend...

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    С Eclipse тебе придется познакомиться, вы ведь на финал собираетесь в этом году проходить:) Едва ли вы выберете какой-нибудь линуксовый редактор, многие из которых настолько выпендрёжные, что в них какие-то совершенно уникальные и ни на что не похожие hotkeys. А других альтернатив особо на финале нет))
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Это да, от эклипса сбежать не удастся... ) Хорошо хотя бы я компьютер себе обновил недавно, дома будет возможность потренироваться, а то, докатились, для редактора один гигагерц проца - это уже смешно типа ))
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Eclipse.
+ копирование проектов по ctrl+C ctrl+V
+ автоматический билд
+ удобное окошко с выводом
+ можно запустить перебор по одной задаче и одновременно кодить или отлаживать другую, всё не вылезая из среды
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
У сред разработки под Java (C#) есть одно очень важное преимущество. С некоторого времени они проводят статический и динамический анализ кода, в силу чего подсвечивают не только ошибки компиляции, но и места в коде, в которых потенциально есть ошибка.

Например, если мы скопипастили строчку вида:
int x1 = queueX.remove();
поменяли x1 на y1, а queueX на queueY поменять забыли, получив:
int y1 = queueX.remove();
то среда разработки в месте, где объявлена queueY, покажет, что она используется только для записи, но не для чтения. Эта фича, например, Eclipse, несколько раз помогала не делать лишнего неверного сабмита за минуту, скажем, до конца соревнования.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    С другой стороны, у конкрентно Eclipse есть странные фичи, например, возможность запуска кода с ошибками компиляции, что конкретно мне стоило попадания в финал.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      там предупреждение есть. точно так же студия может запустить старый билд вместое нового в случае ошибки компиляции :)
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Там есть предупреждение о запуске при несохраненных ресурсах, которое при первом возникновении благополучно пресекается простановкой галочки "always save".

        А вот с этой фишкой история сложнее. Eclipse запускает не старый билд, а текущий. Сообщение же об ошибке компиляции встраивается в код в том месте, где оно имеется, и благополучно вываливается в консоль при первом исполнении этих строк.

        Все было хорошо до того, как мы на полуфинале посадили баг в принципиально неисполняемый кусок кода. Это было в задаче про базу данных, и исправлялись базовые процедуры ввода-вывода. В результате при прогоне на тестовых примерах никаких ошибок никто не выдавал, правильный результат записывался в файл, и т.д. Конечно, ошибка подсвечивалась в редакторе, но была не в поле зрения (базовый ввод-вывод у нас в конце файла). Поэтому с легкой душой мы отсабмитили код и получили CE.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А кто-нибудь emacs пробовал? Я сейчас с ним копаюсь, изучаю, что в нем да как. В принципе подцветка там тоже есть, и можно много чего настроить. Правда, насколько я понял, чтобы стать гуру настройки, нужно изучить LISP.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    В общем, вдогонку к предыдущему своему сообщению. Да, emacs тоже вполне допустимый вариант. Подцветка есть точно для следующих языков: C++, Java, Pascal (да там и его предшественники есть типа Ada). Речь идет о версии 21.3 emacs, если что. 

    Отступы и разметка там тоже есть, более того, если что-то вдруг не так, можно выделить проблемный регион и снова отформатировать отступы одной команды (аналог Reformat в Visual Studio). 

    Что касается того, чтобы скомпилировать и запустить. Я лично создал в директории makefile, из emacs его можно запустить на компиляцию и в отдельном окне компиляции смотреть выводы, чего там может быть не так. В принципе вполне хватает. Для перехода между разными окнами (буферами в их терминологии) тоже простые сочетания клавиш используются. То, что на порядок быстрее сборок и компиляций в той же Visual Studio или Netbeans - это, я думаю, и так понятно. Так что вполне вменяемый аналог FAR и Total Commander, тем более что в Линуксе скорее всего придется использовать его.

    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Забыл сказать про недостатки сразу же. Во-первых, нет по умолчанию модуля для расцветки и форматирования для C# (сейчас рыскаю по инету, может, и найду). Кроме того, лично у меня проблема с русскими буквами, он там поддерживает какие-то странные кодировки типа Cyrillic-ALT и прочие, у которых другая раскладка клавиатуры, по ходу. Сейчас ищу нормальный шаблон Cyrillic, чтобы работал. 

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

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
На c++ использую code::blocks, на мой взгляд самая приятная подсветка кода
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    и еще не закрывает консольное приложение по окончанию программы и возвращает время работы, тем самым не приходиться писать system("pause"), мелочь - а приятно)
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Как фанат студии не могу не добавить, что студия ведет себя точно также :о)
14 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
В линуксе использую Eclipse CDT, с Emacs'ом и Vim'ом как-то не сдружился ввиду отсутсвия встроенного интерфейса к отладчику и практически полного неумения работать с gdb из консоли (что, впрочем, планирую исправить). Переходить с MSVS было довольно легко - hotkey настроил и вперед. Запуск программ с ошибками компиляции с успехом обрезается в настройках (точнее включается вывод предупреждения, главное ребилднуть полностью весь проект). Кстати в CDT, начиная с 3.5.2, встроили наконец-то просмотр контейнеров STL. Не так удобно, как в студии, конечно, но лучше чем ничего. Единственное, что напрягает - ощутимые тормоза среды при попытке просмотреть все элементы массива, скажем, на 100000 интов. В общем, я за Eclipse)
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Честно говоря я не знаю что такое Emax. Но если вы имели в виду семейство текстовых редакторов Emacs, то у GNU Emacs есть встроенный интерфейс к отладчику. По крайней мере к gdb и jdb точно. :)

    proofpic
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Да, точно, опечатался. Не знал, что там есть какой-либо интерфейс к отладчику сразу "из коробки", кроме отдельного окошка с консолью gdb, спасибо за информацию. Но вообще мне, честно говоря, лень тратить время на изучение Emacs'a только ради олимпиад. Сейчас пишу в NetBeans и всем доволен, работает все-таки побыстрее, чем Eclipse. Возможностей дебага С++ там, правда, еще меньше, но я уже привык к использованию debug output.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Последнее время использую Eclipse, т.к. хочу привыкнуть хорошенько писать на Java. Раньше писал на C++ и использовал Visual Studio. Из всех недостатков Eclipse лично для меня выделю пожалуй только некоторую "тормознутость".. т.е. если бы она откликалась на команды так же как и Visual Studio, то цены бы ей не было. К слову, по статистике, пользователя раздражает больше, если программа отзывается на его клики дольше чем по истечении 0.7 сек, чем подождать пока она отработает 2-3 минуты =). Это к тому, что на джаве писать графический интерфейс не есть хорошо... А так замечательная среда разработки. И variables хорошие. Мне нравится то, что можно, написав свой класс , переопределить в нём toString() и в Variables будет отображаться, то что вы захотите =). 
Хотя вот, вспомнил. было однажды, когда дебажил программу, Eclipse мне почему-то автоматически останавливался на одной строчке, будто на ней стоял брейпойнт, хотя там на самом деле ничего не было :-(
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я использую идею. На все контесты у меня один проект, в котором лежат тимплейты для различных типов соревнований. По окончании котеста исходники текущего просто копируются в отдельную папочку.
Удобства:
Чтобы начать писать новую задачу, надо просто зайти в соответствующий тимплейт и нажать F5, вбить имя класса (которое совпадает с именем входного/выходного файла буде такой есть, а затем id = getClass().getName().toLowerCase()) - вуаля.
Возможность моментального переключения. Запуск свеженаписанного класса - правой кнопкой по заголовку - дебаг.
Возможность спокойно дебагать другую задачу с запущенным генератором чего-нибудь.
Недостатки:
Не обновляются файлы вывода если не переключится на другое окно. Если кто знает как исправлять - скажите
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Что-то все о С++ и Java =)
Люди вон выигрывают чемпионат мира на Free Pascal =)
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    пруфлинк?
  • 11 лет назад, # ^ |
      Проголосовать: нравится -27 Проголосовать: не нравится

    Разве на ACM ICPC вообще доступен FP? Гена, насколько мне известно, на FP писал IOI, а где-то в 2012 — 2013 переключился на C++ (по крайней мере здесь, на CF).

    • 11 лет назад, # ^ |
        Проголосовать: нравится -15 Проголосовать: не нравится

      Ну так сообщение же датировано 2010 годом.

      • 11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Ой. Лол. А я и не посмотрел на даты. Да, пора переставать встревать в любые дискуссии, что вижу в "прямом эфире" %)

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Можете поделиться, как настроить far, чтобы он компилировал файлы явы по нажатию ENTER?
  • 14 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    F9, C, A

    Там добавить две записи.

    Для расширения *.java

    "C:\Program Files\Java\jdk1.6.0_18\bin\javac.exe" !.!

    Тока путь поменять на свой

    Для раснирения *.class

    java !

     

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    F9 - Commands - File Associations;
    там Insert;
    маска "*.java";
    описание любое;
    команда на Enter: "javac !.!";
    (ну или C:\Programs\...\javac, если компилятор не в путях).
    дальше OK, Esc, и всё должно работать.

    Также можно сделать с "*.class"-файлом, чтобы он запускался по Enter. Для него команда будет примерно такая: "java -cp . -Xmx 256M -Xss 64M !"

    Ещё, если в каком-то месте что-то непонятно, можно нажать F1 и почитать.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Для С++ использую "codeblocks"

Плюсы:

1. подходит и под Linux

2. бесплатно!

Минусы:

1. надо проекты создавать

  • 14 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится
    А у меня получается писать в codeblocks и не создавать проектов.
    Что я делаю не так?
14 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
Вопрос:
Как сделать так, чтоб в "Far manager" при создании файла "*.срр" в нём уже был мой темплейт?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Насчёт Геннадия могу предположить, что в ближайшие года 2-3 он, всё же, перейдёт на си-подобные языки. Просто очень часто бывает, что раньше некоторого возраста трудно мыслить объектно, не достигнув определённого возраста) Наверное, этот случай. А чемпионаты выигрывает потому, что рано начал программировать: научился думать быстро, да и просто талант.
  • 14 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    AFAIK, для него не составляет никакой проблемы писать на си, когда требуются шаблоны, и/или если Паскаля попросту нет на каком-либо соревновании.
    К тому же на Паскале на Codeforces писали andrewzta и KOTEHOK.
  • 14 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Зачем мыслить 'объектно' в спортивном программировании? И в каком месте C++ более 'объектный', чем Object Pascal?
14 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Если я правильно понимаю, Геннадий в основном сдаёт не на Object Pascal, а на Turbo Pascal/Delphi. Несколько месяцев назад сам перешёл с паскаля на яву. Хочу сказать, что язык более гибок, писать стало легче, возвращаться обратно нет никакого желания. Хотя и к яве есть некоторые претензии, вроде отсутствия указательных типов, скорости работы и громоздкости. Думаю, не перейти на С++? :)
  • 14 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    А что такого жутко нужного объектного в Object Pascal, чего нет в компиляторе с free pascal?
  • 14 лет назад, # ^ |
      Проголосовать: нравится +7 Проголосовать: не нравится
    А язык, который используется в Delphi, — это разве не Object Pascal? В последний раз, когда я его видел, это было так, да и википедия подтверждает.
14 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
adamax, признаю, неправ.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А как в code::blocks можно по дебашит cpp?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
а не создавая проект можно дебажит ?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Ребят у меня вот будет такой вопрос. Вы не знаете как в NetBeans можно поменять, там оно что-то типо шаблона (ну например: когда создаешь проект C++  в файле .cpp создается сразу исходный шаблон с определенной датой когда был создан проэкт (в коменте), функция main и т.д.). Вот как его можно изменить под себя?)
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Спасибо) у меня просто NetBeanse на английском) и я там как-то лазил и решил не чего не менять, а то что то еще не то сделаю) но все таки полазил и нашел. Биг спс!
»
11 лет назад, # |
Rev. 2   Проголосовать: нравится +4 Проголосовать: не нравится

Дома пишу в Sublime Text 2 и компилирую исключительно руками из терминала. Для отладки — debugging output.

Благодаря этому легко могу переключаться между ОСями или редакторами (хотя фич Саблайма на онсайтах нередко не хватает, по привычке пытаюсь использовать множественное выделение или ещё что такое), к тому же я всегда знаю, как именно компилируется мой код. Вообще способность более-менее ориентироваться в шелле нередко бывает полезной на контестах, для того же автоматизированного тестирования, например.

Зачем на контесте нужна IDE, если честно, не понимаю. Кода у нас мало (и всё в одном файле), так что компилить совсем не сложно. Автокомплит бывает полезным, но редактор с поддержкой автокомплита — не обязательно IDE :)

P.S.: а, да, из того, что обычно доступно на онсайтах, обычно использую gedit (Linux) или Notepad++ (Windows), благо они простые, быстрые и более-менее удобные. Когда-то использовал Geany, но всё-таки не люблю доверять компиляцию/исполнение среде, да и притормаживает он на некоторых тачках.

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Не удержался — написал. Авторы двух последних комментариев — чем они заслужили столько минусов? Тем, что подняли тему 3годичной давности? Или Вы их недолюбливаете за что то?

Менее логичного "слития кармы" я еще не видел.

»
11 лет назад, # |
  Проголосовать: нравится +65 Проголосовать: не нравится

я всегда пишу и буду писать из MSVC

время показало я был не прав :)

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +19 Проголосовать: не нравится

    Так в чем же сила?:)

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      В привычке ;)

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится -26 Проголосовать: не нравится

      "... а сила в правде".

      А по теме: какая нафиг IDE? Что из возможностей IDE пригождается вообще? Автокомплит (самый простой) есть везде: vim, emacs и даже far edit. Extract, refactor, inline var, encapsulate — некоторые олимпиадчики даже не знают значения этих слов. Встроенные методы тестирования, профайлинг, системы контроля версий, build скрипты... Максимум, что нужно — это макрос в стиле nmap <F2> :!g++\ %\ &&\ ./a.out.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        На джаве пробовали писать в FARе?

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Нет, но когда нужна магия биг-интейжеров я писал на Vim. В итоге выходили строки по 200 символов в ширину, но разве это скорее моя проблема, чем редактора.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится +13 Проголосовать: не нравится

        "Самый простой" автокомплит чаще раздражает, чем помогает, т.к. постоянно предлагает подставить то, что абсолютно не подходит в данном контексте (например, хочу вызвать метод одного класса, а предлагаются методы другого, переменные и все остальное, начинающееся с введенного префикса). И автокомплит редактора не позволит вызвать метод, название которого ты не помнишь, IDE же просто покажет все методы класса (а возможно, и краткую документацию к ним).

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

Использую Microsoft Visual Express C++ 2013 с темной схемой
На самом деле очень удобно использовать проект. В проекте у меня находятся файлы main.cpp, in.txt, x.h (шаблон), a.h, b.h... На контесте посылаю h-файлы в качестве решений.
Быстро переключаться между ними — ctrl+tab. solution explorer не нужен.
Горячие клавиши очень удобны. Создать новый проект — ctrl+shift+n, создать новый файл — ctrl+shift+a
В main.cpp у меня находятся всего две строчки

#define XDEBUG
#include "a.h"

В a.h при этом будет

int main()
{
#ifdef XDEBUG
	freopen("in.txt", "r", stdin);
#else
	//freopen для файлов в-в из условия если нужно
#endif
	//решение
}

Это очень удобно — вывод всегда будет идти на экран, но никаких действий перед отправкой осуществлять не надо
Кроме того, можно сконфигурировать начальный проект так, чтобы при создании нового проекта сразу же создавались нужные файлы (для этого необходимо открыть дефолтный проект Program Files/Microsoft Visual Studio x/VC/VCWizards/default.vcxproj). Создаешь новый проект — а там уже шаблон твой лежит, удобно. А еще в настройках проекта уже стоит игнорировать ворнинги 4996 (deprecated-методы)
А возможности отладки конечно же в этом IDE самые лучшие. И все окна можно настроить на свой вкус.