【发布时间】:2011-02-19 00:06:29
【问题描述】:
有人请用适当的标签重新标记
你好,
这是我的故事,但我想它适用于所有程序员。
我们从一些简单的 Hello World 程序开始编程。我们练习并向程序添加功能/类。但他们仍然保持着 Hello World 风格。函数调用一些其他函数标准库。
但是当涉及到现实世界的项目时(我只是熟悉 OpenSource)。更多其他的事情浮出水面。然后就开始了这位新手程序员的艰辛。
项目流程:
- 程序未按预期运行。使用调试器
- 使用third party libraries。今天,我们有 每种流行语言的库 几乎我们需要的一切。
- 多人在同一个项目上工作。使用Version Control Systems。
- 项目越来越大。 Build Automation
- 很多人开始使用您的应用程序。您需要将其移植到 不同的平台(操作 系统/架构)。需要 交叉编译
- 我不知道为什么,但我们需要单元测试框架和/或单元测试
- 还有什么???
这里的问题是这个新手程序员对这些东西的存在缺乏了解。
我的意思是当我开始研究一些现实世界的项目(开源)时。我不知道这是什么?为什么我们需要这样做?
$./configure
$make
$make install
最近我开始意识到关键字“构建自动化”。我需要一些可用于 linux 的库,但我需要在 windows 中使用它。我不知道它被称为“交叉编译”和诸如 MinGW/MSYS 之类的工具就是为此目的而存在的。我不得不以艰苦的方式学习这些东西。我希望有人告诉我这些东西的存在。那会节省我很多时间。
今天我遇到了性能问题,感觉需要一些东西。我想我正在寻找的东西是 Profiler。 感谢我参与开源项目。尽管我没有意识到/觉得有必要这样做,但我知道术语单元测试。
虽然这种(困难的)学习方式像现在这样有一些很大的优势,但我能够非常快速地找出解决方案或一些未知的东西,而且与我的其他朋友不同,我在任何时候都不会受到打击。但我讨厌浪费时间。你不相信我浪费了多少时间来弄清楚Makefiles和Gnu Build System
那么,我在这篇文章中寻找什么?
- 请填写
Project Flow。我想看看所有的事情都涉及到什么。 - 对于
Project Flow列表中的每个任务。我想查看以下信息。- 提供最流行的解决方案/工具。
- 维基百科列出所有备选方案。
- [可选] 推荐一些好的书籍/教程/指南来学习这方面的知识。或链接到相关的 SO 帖子/标签。
- 我知道有些东西是特定于语言和操作系统的。我想说我们只有少数主要平台 Linux/Unix、Windows、Java、.NET 和少数主要语言 C、C++、Java、.NET、Python。解决这些语言。绰绰有余。
示例:
-
使用库:
- 库以下列任何形式分发
- 来源分布
- 静态库(*.lib for windows / *.a for linux)
- 动态库(.dll for windows /.so for linux)
- .NET 程序集
- 我不懂java
-
资源(现在,一旦我知道了上述信息。我可以自己搜索资源)
- 库以下列任何形式分发
注意:
请注意,我不是要建议有关如何学习这些内容的信息。我在问还涉及哪些此类事情以及每种事情的替代方案。
【问题讨论】:
-
恕我直言,这个问题太笼统了——你基本上是在尝试在一个问题中重复 SO 的结构和功能。例如 - 如果您对使用库感兴趣,请询问有关使用库的问题。
-
@Neil Butterworth:我只想要一个流程索引。正如我所说,如果我知道我想要
some thing,那么查找有关它的信息并不难。问题是弄清楚那是什么东西?我知道它的一般性和太大这就是我要求链接相关 SO 帖子的原因。 -
问题是有许多不同的流程和方法,原则和实践,如果不谈论具体的事情,例如,就很难回答。 XP 及其实践和喜爱的工具
-
@Gabriel Ščerbák:我明白了。然后你能列出你知道/使用的方法和流程吗?总比不知道好?
标签: language-agnostic version-control build-process