程序员需要知道几个概念

简介: 版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78437975 文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多干货资源。
版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78437975

文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多干货资源。
本文为sydMobile原创文章,可以随意转载,但请务必注明出处!

Apache软件基金会(Apache Software Foundation,简称ASF)

是专门为支持开源软件项目而创办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证。

发展历史

软件基金会1999年正式创建,创建者:自称“Apache组织”的群体,这个组织在1999年以前就存在了很长时间了,这个组织的开发爱好者们聚集在一起,在美国的伊利诺伊大学超级计算机应用程序国家中心(National Center for Supercomuting Application简称NCSA)开发的NCSA HTTPd服务器的基础上开发维护了一个叫做Apache的HTTP服务器。

最初NCSA HTTPd服务器是由Rob McCool开发出来的,但是它的最初的开发者们逐渐对此失去了兴趣,造成了没有人对这个服务器软件提供更多的技术支持。而这个服务器的功能又是非常强大的,代码可以自由下载修改发布,于是这个服务器软件的爱好者与用户开始自发起来自己修改,不断的改善其功能,为了更好的相互沟通Brian Behlendorf自己创建了邮件列表,用它来交流技术维护软件。逐渐这个群体就成为了“Apache组织”,把这个经过不断修改并并改善的服务器软件命名为Apache服务器(Apache Server),这个命名是根据北美当地的一支印第安部落而来的,这支部落以高超的军事素养和超人的忍耐力著称,19世纪后半期对侵占他们领土的入侵者进行了反抗,为了对这支印第安部落表示敬仰之意,取该部落名称为服务器的名字。这个命名还流传着一段很有意思的流传,因为这个服务器是在NCSA HTTPd服务器基础上,通过大家不断的修正、打补丁(Patchy)的产物,被戏称为“A Patchy Server”(一个补丁服务器)。因为”A Patchy”与“Apache”是谐音,故命名为“Apache Server”

与我们Android紧密相关的就是 Apache Harmony项目,这个项目就是Apache软件基金会主导的开放源代码项目,是自由Java实现计划的一部分,基于Java SE5与6,目标就是以开放源代码的方式,实现出Java SDK。J2SE 5.0的完整性99%,J2SE6.0完成97%,我们知道我们开发的Android是使用Java作为开发语言的,Google就是在开发Android的时候雇佣了Sun的一些程序员,利用Harmony中的开源java库实现了Java程序的转换,从而避开了授权费用。使得开发者可使用Java语言在不是Java平台(在Android的平台上)上开发程序。不过由于纠纷授权问题,Android Nought后依赖OpenJDK库,将专利的JDK替换为开源方案的OpenJDK,以彻底解决Java的专利问题。

开源项目

开源项目(open source software OSS 也称为开放源代码软件)是一种源代码可以任意获取的计算机软件,版权在软件协议的规定下保留一部分权利允许用户学习、修改、增进提高这款软件的质量。
有些软件的作者只将源代码公开,却不匹配“开放源代码”的自定义以及条件,因为作者可能设置公开源代码的条件限制,诸如限制可阅读源代码的对象、限制派生产品等,这种称为公开源代码的免费软件,(Freeware,知名的模拟器软件MAME)因此公开源代码的软件并不一定可以称之为开发源代码软件。

开发源代码的定义是由Bruce Perens定义的:
自由再散步:允许获得源代码的人可以自由的将此源代码散布
源代码:程序的可执行文件在散布的时候,必需随附完整的源代码,或者让人方便的事后获取源代码
派生著作:让人可依此源代码的修改后,在依照同一许可协议的情形下再散步,原创作者程序源代码的完整性:修改后的版本,需要用不同的版本号码与原始的代码分别,保障原始代码的完整性不得对任何或者团体有差别待遇,但如果因为法律规定的情形则可以例外不限制商业使用。
散布许可协议:如果软件再次散步,必需以同一条款散步

开放源代码有时候不仅仅指开放源代码软件,它同时也是一种软件开放模式的名称。使用开放源代码开放模式的软件代表就有
Linux操作系统
严格地说:开放源代码软件与自由软件是俩不同的概念,只要匹配开源软件定义的软件就能称为开放源代码软件

自由软件是在电脑为个人或为公共利益,而非私人公司或政府等企图限制或者监事我们工作时,我们在家、学校、公司使用
时,我们具有其控制权。

关于开发语言的知识

编程语言实际上都不能说是什么做出来的,编程语言实际上
是一种规范,一种协议。
编程者遵循一定的规则(语法)来写代码(符合语法规则的文本),然后该语言的编译器把你的代码转化成CUP可以执行的单条指令序列。
比如英文,26个字母的组合,有了词法语法之后组合起来就有了一定的意思,就形成了语言。如果你按照自己的想法制定一套规定,还是用26个字母,然后取名叫 英文++,这也就是一门新语言了。你自己 定义的那一套规定就叫做语法,别人必须按照你的规定才能理解你的语言。在让别人理解你的语言之前你需要解释给他听,翻译成它所懂的语言,如果别人懂的语言是机器语言,你在解释给他的时候所扮演的角色。
一个语言的编译器理论上可以用任何语言来编写实现。
参考:维基百科



AndroidInterviewQuestions
关注微信公众号,更多知识发布

目录
相关文章
|
4月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
79 9
|
3月前
|
JavaScript 前端开发 Python
探索编程的本质:从代码到哲学的奇妙旅程
该文档指导如何安装NodeJS及PyExecJS。首先从官网下载并安装NodeJS,验证安装是否成功可通过命令`node --version`检查版本。PyExecJS则通过`pip install PyExecJS`进行安装。安装后,通过Python导入`execjs`模块可查看执行JS的环境,并使用`eval`和`compile`函数执行JavaScript代码或编译JS脚本。具体案例展示了简单的JS执行与环境选择方法。
18 1
|
3月前
|
设计模式 机器学习/深度学习 存储
探索编程的本质:从代码到创造力
本文通过深入探讨编程的基本原理和实践,揭示编程不仅仅是技术操作,更是一种思维训练和创造力的表达。我们将从基础的数据结构与算法入手,逐步过渡到设计模式和架构理念,最终探讨编程在现实世界中的应用和创新潜力。
|
存储 编译器 C++
C++类和对象概念及实现详解(下篇)
C++类和对象概念及实现详解(下篇)
41 0
|
程序员
程序人生 - 程序员编程10大原则,请牢牢记住!
程序人生 - 程序员编程10大原则,请牢牢记住!
156 0
程序人生 - 程序员编程10大原则,请牢牢记住!
|
存储 前端开发 JavaScript
每个程序员都应该知道的50个Web开发术语
每个程序员都应该知道的50个Web开发术语
318 0
|
程序员
软技能,程序员编程之外的升值之道!
程序员,除了编码之外的软技能有哪些呢?《软技能——代码之外的生存指南》33岁实现职业自由、财富自由的作者给出了解读。
6466 0
软技能,程序员编程之外的升值之道!
|
机器学习/深度学习 存储 算法
编程面试的10大算法概念汇总
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:
142 0
|
程序员
程序员的本质
译文出自:伯乐在线
620 0
|
程序员
【观点】程序员必须知道的编程格言
导读:本文是从《What are your list of must know programming proverbs ? 》这篇文章翻译而来。 内容如下: 继Kevin给了我们10条按他的观点的每个程序员必须知道的编程格言。
954 0

热门文章

最新文章