系统程序员成长计划-工程管理(一)

 

转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli at hotmail dot com>

到目前为止本书的上半部分已经完成了。在上半部分中,我们学习了基本的数据结构、算法和设计思想。在进行深入学习之前,我们把前面所写的代码整理成一个通用的函数库,这个函数可能在以后的工作中用得着。

前面我们写的Makefile非常简单,大概类似下面的内容:

all:
gcc -Wall -g -DDARRAY_TEST darray.c -o darray_test
gcc -Wall -g -DDLIST_TEST dlist.c -o dlist_test
gcc -Wall -g linear_container_test.c -L./ -lcontainer -o container_test
gcc -Wall -g invert_ng.c -DINVERT_TEST -L./ -lcontainer -o invert_ng_test
gcc -Wall -g invert.c -DINVERT_TEST -L./ -lcontainer -o invert_test
gcc -Wall -g -shared darray.c dlist.c linear_container_darray.c linear_container_dlist.c -o libcontainer.so
clean:
rm *test *.so

这个简单的Makefile,对于我们学习编程已经够了,因为我们写的函数库没有真正的用户,只要测试程序通过就好了。但是作为一个真正的软件包,你还要考虑下列因素:

o 依赖规则。前面我们没有写编译依赖规则,不管源文件有没有变化,反正全部编译一遍。对于小程序来说用不了多少时间,那没有问题,而一些大模块可能要花上几十分钟,那就不可接受了。

o 不同平台之间的差异。 同是支持POSIX标准的unix-like操作系统,多多少少都有些不同。即使同样是Linux,发行版本不一样,或者libc(除了glibc外还有 几种轻量级libc)不一样,或者使用的桌面环境(如KDE和GNOME)不一样,都会给编写跨平台软件来带一些困难。我们在编写软件时已经考虑到了可移 植性问题,但是去检查编译环境就也是件麻烦的事。

o 交叉编译。在嵌入式环境中,我们在PC上编译在设备上运行的程序,或者在x86上编译在powerpc上运行的程序,这都是属于交叉编译。交叉编译产生不同于编译机器的机器码,这要求编译时使用不同(版本)的编译器。

o 同时为多个平台编译。比如编译一个在PC上运行的模拟环境和在ARM板子上实际运行的版本。在前面的Makefile里,编译生成的文件全部放在一个目录下,一次只能编译一个版本,切换到另外一个版本时,你要清除所有文件重新编译。

o 调用者如何使用。一个软件包肯定不是孤独存在的,一定有另外的函数库或应用程序使用它。调用者怎么知道这个软件包安装在哪里呢?有的安装在/usr下,有的安装在/usr/local下,还有的安装到用户目录下。不知道安装在哪里,又怎样去链接它呢?

o Makefile的复杂度。要用Makefile解决上述问题,Makefile一定变得非常复杂。有兴趣的读者可以研究一下Firefox、Linux 和Android的Makefile,这些Makefile可不是一般人可以写出来的,普通开发人员通常不愿意花几周时间去写Makefile吧。

其实这些问题都不用担心,因为开源界的前辈们早就遇到过了,并用非常巧妙的方式解决了它们。接下来,我们一起学习automake/autoconf,看看它是如何解决这些问题的。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 全栈程序员成长历程通常包括以下几个步骤: 1. 基础知识学习:包括计算机基础知识、编程语言基础知识、数据结构和算法等。 2. 实践经验积累:通过完成一些小项目或参与开源项目,积累实际开发经验,提升编程能力。 3. 选择一个关注领域:全栈程序员是指能够涉及前端、后端、数据库、运维等多个领域的程序员,因此可以选择一个感兴趣的领域进行深入学习。 4. 加强软件工程系统设计能力:包括代码规范、版本控制、测试、自动化部署、性能优化等方面的知识和技能。 5. 不断学习和提升:全栈程序员的技术领域非常广泛,因此要不断学习新技术和理解新范式,提升自己的综合能力。 ### 回答2: 一个全栈程序员成长历程可以说是一个不断学习和成长的过程。 一开始,全栈程序员的技能可能还比较单一,只懂得某一种编程语言或者某一种技术领域。但是随着时间的推移和经验的积累,他们逐渐开始接触到更广泛的技术领域和编程语言。 在成长过程中,全栈程序员开始了解和学习不同的编程语言,如Java、Python、JavaScript等。他们学会了如何使用这些语言来开发不同的应用程序,无论是前端还是后端。 同时,全栈程序员也开始了解多种技术框架和开发工具,如Spring、React、Vue等。他们学会了如何使用这些框架来提高开发效率和优化代码结构。 除了编程语言和技术框架,全栈程序员还需要学习其他相关的技能,如数据库管理、网络安全等。他们需要了解如何设计和管理数据库,如何保护应用程序的安全性。 在实践中,全栈程序员也需要积极参与不同的项目,与团队成员合作。通过与其他开发人员的合作,他们可以学到更多的技术知识和项目管理经验。 总结起来,一个全栈程序员成长历程是一个不断学习和拓展技能的过程。他们从单一的技术领域逐渐扩展到多个领域,从而成为可以独立完成整个应用程序开发的专业人员。通过不断学习和实践,全栈程序员可以不断提升自己的技术水平和职业能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值