Ответы пользователя по тегу Программирование
  • Чем удовлетворяет вас ваша IDE?

    DeNnEr
    @DeNnEr
    Я достаточно часто рассказываю о том, что такое IDE, и вообще на эту тему в своём блоге(http://blog.soulrobber.ru/).
    Но если нужно «здесь и сейчас», то:
    1) Удобство интерфейса. Минимализм. IDE это не Word, 90% времени программист должен наблюдать редактор и дерево каталогов, файлов проекта. См. TextMate, Vim, Emacs.
    2) Скорость. Она характеризуется показателями скорости работы анализатора кода(автокомплит часть его) и редактора.
    3) AI анализатора кода. Он должен уметь подхватывать символы из модулей, импортируемых в коде.
    4) Разная подсветка кода(в т.ч. фон редактора, гаттера, курсора etc). Жизненно важно иметь 2-3 стиля подсветки: тёмная, светлая, в стиле «zenburn».
    5) Модульность. Скриптинг и остальное — костыли и попытки сделать нормальную систему, но лучший вариант пока представлен только в TextMate.
    6) Инструменты дебага приложения. Как минимум — gdb и хоть какая-нибудь интеграция. Лучше — подхват живого приложения с его помощью. Без инструмента дебага твоя IDE будет просто редактором. Мало IDE смогут называться таковыми если убрать из них инструмент дебага.
    7) Конкретно, поддержка языков(это только те, что нужны мне): C, C++, Python, Ruby, PHP, XML, HTML, CSS, JS, HAML, SASS, Django Templates, Makp, genshi, Lisp. Это вместе с так называемыми «lint'ами». Для html поддержка ZenCoding.
    8) Рефакторинг(ну это вытекает из анализаторов кода, но на всякий...).
    9) Поддержка вложенных терминалов как закладок.
    10) Поддержка CVS, DCVS.
    11) Удобные комбинации клавиш. Я должен быстро переместиться в дерево файлов(одним сочетанием клавиш), сменить бранч(1-2 сочетаниями), автоапдейтнуть, найти нужный файл без лишнего нажатия(просто жмакая кнопку arrow down), открыть, сделать изменения, открыть консоль(одной кнопкой или сочетанием), сделать пару операций, вернуться в файл, дописать что-нибудь, сделать коммит(не менее легко, чем остальные вещи), сменить бранч обратно и автоапдейтнуть, а затем сделать пуш.

    Собственно, список я могу продолжать вечно, но я знаю что ты не сделаешь и 1/1000 от функционала текущих IDE. Ну не будут такие вопросы появляться у человека, который будет делать IDE, которая будет популярна.
    Я использовал огромное число IDE и редакторов, пришёл к некоторым концепциям и выводам, думаю начать разработку своей IDE, но пока не рвусь, т.к. времени не много на это дело, да и дело-то не самое благодарное.
    Пока я пришёл к выводу, что лучше всего использовать TextMate или Vim. Не Emacs, т.к. я с ним наигрался и пришёл к выводу, что Vim удобнее, хотя Lisp мне милее вимскрипта.
    Однако, есть ещё одна вещь — Sublime Text 2. Обзор можно посмотреть здесь: blog.soulrobber.ru/2011/01/30/sublime-text-2/
    Это кроссплатформенный аналог TextMate. Увы, проприетарный и платный, но есть бессрочный триал-режим.
    Ответ написан
    5 комментариев
  • Вопросы на собеседовании программисту С++

    DeNnEr
    @DeNnEr
    Спроси про использование const в разных частях объявления функции.
    Чисто так, можешь спросить на тему того, что быстрее работает в Unix: потоки или процессы. Вопрос чуть спорный, но можешь сделать немного выводов.
    Спроси как человек относится к препроцессору, дай пару опасных макросов вроде a+b (ведь верным будет именно (a+b) ), попроси найти проблему.
    Да, попроси рассказать о ++, --, о результатах выполнения кода int i = 5; ++i + ++i;. Верным ответом будет: как компилятор захочет, какая будет фаза луны, 13, 14.
    Помучай по темплейтам, если З/П от 60к, то он должен хорошо их знать.
    Спроси про Boost, как он к нему относится, попроси не лукавить(скажет что-нибудь про 2-страничные ошибки — всё ок).
    Спроси как он относится к Qt.
    Вообще, на C++ столько ловушек, что ужас. У Страуструпа их не мало описано, поэтому можешь оттуда брать примеры и давать их. Даже если человек вспомнит ответы, это уже будет значить что он читал Страуструпа и понял всё что там есть, а это огромный плюс.
    Ответ написан
    6 комментариев
  • Вопросы на собеседовании программисту Python

    DeNnEr
    @DeNnEr
    Проектирование, потоки?
    Спроси что такое гринлеты, Twisted, Tornado, в чём отличие мультипроцессинга от потоков, в чём их отличия в модулях Python(тест пройден если человек скажет что GIL работает в обоих случаях, а сами модули имеют одинаковый набор функций).
    Про проектирование достаточно сложно говорить. Попроси придумать простейший Singleton и объяснить какие альтернативы этому решению есть. Скажет что-то про мета-классы, про то, что сами по себе модули являются синглтоном — тест пройден.
    Спроси что такое кольцевые зависимости. Дай пример кода с такой проблемой и попроси решить её или аргументировать почему выхода нет. Тест пройден если человек переместит все run-time используемые импорты в конец файла или перепроектирует систему, предложив вариант без кольцевых зависимостей.
    Ответ написан
    9 комментариев