Переход от простых программ в стиле Hello world к большим / реальным проектам: руководство к реальным проектам - PullRequest
2 голосов
/ 13 мая 2010

Кто-нибудь, пожалуйста, пометите соответствующие теги

Здравствуйте,

Это моя история, но я думаю, что это справедливо для всех программистов.

Мы начинаем программирование с простой программы Hello World. Мы практикуем и добавляем функции / классы в программу. Но они все еще поддерживают стиль Hello World. функция, вызывающая некоторые другие функции стандартной библиотеки.

Но когда речь идет о реальных проектах (я просто знаком с OpenSource). Много больше других вещей входят в картину. Затем начинаются трудности этого начинающего программиста.

Ход проекта:

  1. Программа не работает должным образом. Используйте Отладчик
  2. Использование сторонних библиотек . У нас сегодня библиотека на всех популярных языках для почти все, что нам нужно.
  3. Несколько человек работают над одним проектом. Использование Контроль версий Системы .
  4. Проект становится большим. Автоматизация сборки
  5. Многие люди начали использовать ваше приложение. Вам нужно перенести его на разные платформы (работающие системы / архитектура). Нужно для Кросс-компиляция
  6. Я не знаю почему, но нам нужны Структура модульного тестирования и / или модульные тесты
  7. Что еще ???

Проблема в этом заключается в отсутствии знаний этого начинающего программиста о существовании этих вещей.

Я имею в виду, когда начал изучать некоторые реальные проекты (Opensource). Я не знал, что это? а зачем нам это делать?

$./configure
$make
$make install

Недавно мне стало известно о ключевом слове "Build Automation". Мне нужна была какая-то библиотека, которая была бы доступна для Linux, но она мне была нужна в Windows. Я не знал, что это называется «кросс-компиляция» и такие инструменты, как MinGW / MSYS, существуют для этой цели. Я должен был выучить эти вещи трудным путем. Хотелось бы, чтобы кто-нибудь рассказал мне о существовании таких вещей. Это сэкономило бы мне много времени.

Сегодня я столкнулся с проблемой производительности и чувствовал необходимость чего-то. Я думаю, что я ищу, это Profiler. Благодаря моему участию в проектах с открытым исходным кодом. Несмотря на то, что я не осознавал / не чувствовал необходимости в этом, я знаю термин Unit Testing.

Хотя этот (сложный) способ изучения вещей имеет некоторые большие преимущества, как сейчас, я могу найти решение или неизвестную вещь очень быстро, и в отличие от других моих друзей, я не поражен в любой момент. Но я ненавижу потерю времени. Вы не верите, сколько времени я потратил на выяснение Makefiles & Gnu Build System

Итак, что я ищу в этом сообщении?

  1. Пожалуйста, заполните Project Flow. Я хочу посмотреть, в чем дело.
  2. Для каждой задачи в списке Project Flow. Я хочу видеть следующую информацию.
    • Самые популярные решения / инструменты доступны.
    • Википедия список всех альтернатив.
    • [опционально]. Предложите несколько хороших книг / учебников / руководств для изучения этого Или ссылку на соответствующие сообщения / теги.
    • Я знаю, что что-то зависит от языка и ОС. Я бы сказал, что у нас есть только несколько основных платформ Linux / Unix, Windows, Java, .NET и несколько основных языков C, C ++, Java, .NET, Python. Обращайтесь к этим языкам. Его более чем достаточно.

Пример:

  1. Использование библиотек :

Примечание:

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

1 Ответ

0 голосов
/ 13 мая 2010

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

  • Рациональный унифицированный процесс (RUP) / Унифицированный процесс (UP)
  • экстремальное программирование (XP)
  • Scrum
  • Разработка через тестирование (TDD) / Разработка через поведение (BDD)
  • Разработка программного обеспечения Lean
  • канбан
  • Разработка на основе функций (FDD)

Это и многие другие методы разработки программного обеспечения, которые включают различные принципы, процессы и роли. Большинство из них также поставляются с некоторыми наборами практик для разных целей, например, те, которые вы упоминаете в своем вопросе. Они довольно широко используются в реальном мире, хотя многие компании используют разные комбинации, а также некоторые собственные процессы и методы. То, что не является частью того, что используется так широко, но может дать вам некоторые интересные взгляды на разработку, это формальные методы, которые являются точными, но в большинстве случаев слишком непрактичными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...