程序员

新手编程指南,全球顶尖网站【分享篇】

社会主义新天地 提交于 2019-12-01 19:50:30
随着互联网的快速发展,编程不再是IT专业人员和软件工程师的专利。如今,了解代码知识可能是这个信息化世界最重要的技能之一,它直接影响到我们职业发展的高度和深度。另一方面,学编程并不是为了抢程序员的饭碗,其实编程还有一些隐形的优势,他可以提升我们的逻辑思维、实践能力以及解决问题等综合技能。特别是对于设计师来说,掌握基本的代码知识,才能更高效的与开发工程师进行协作。 当基因都可以编写的时候,你还在为不会编程而忧虑吗?哈哈哈,玩笑归玩笑,今天小编呢主要是想给大家推荐一些非常优质的在线学习编程的站点,重点都是免费的!!划重点!!学会这些,从此走上编程的人生巅峰! 图片来源:Eduonix Blog 学习代码有什么好处: 提高你编程、计算思维、算法等方面的思维能力; 减少对项目开发人员的依赖; 帮助你更好的管理网站; 拓宽你的职业高度。 所以无论你是想跳槽程序员工作,还是想在业余学习如何构建网站,或者填充自己的兴趣爱好等等。以下这些网站都可以帮助你! 1. GitHub GitHub是一个面向开源及私有软件项目的托管平台,也是最大的开源中心。 国内外知名度都非常高。项目非常丰富,应有尽有。Ruby和Javascript的项目尤其多。 Git和GitHub是软件开发工程师非常重要的工具之一;如果你是一名程序员或者对程序有点了解的,那么你不会不知道Github。很多开源的大神

程序员进阶攻略

你说的曾经没有我的故事 提交于 2019-12-01 19:13:38
对于程序员来说是一个特别幸运的时代。每一个有追求的程序员都希 望能获得快速成长,但成长的道路并没那么平坦和舒适,充满了崎岖、障碍和迷雾。 同样,我在成长的道路上,也走过很多弯路,有过迷茫,有过困惑。当我回顾时,总结出一条渐渐清晰的成长路线。在回顾的过程中,一方面通过适时地驻足、回顾与梳理,可以帮助自己更好地认识到,我是如何从昨天走到今天的,并指导自己走向更好的明天;另一方面, 程序(IT)行业还在高速发展,走在这条路上的人越来越多,而我对自身成长路径的反思与认知,想必也可能帮助到很多走在同样路上的人。 “永远有走在你前面的人”,当年他们留 下的“脚印”和路径也给予了我很多启发与指引。所以,本书旨在提供另一种可供参考的路标。所言:“走在同样的路上,遇见自己的风景。 成长线,包括如下: 一、征途:启程之初 二、修炼:程序之术 三、修行:由术入道 四、徘徊:道中彷徨 五、寻路:路在何方 六、蜕变:破茧成蝶 “启程之初”,是你刚踏上程序之路面临的一些问题和感悟。“程序之术”,是你工作早期的主要内容,以修炼编程技能为主。除了编程写代码,还有很多其他的内容,这是另外一个维度的修行之路,也即 “由术入道”。 工作数年,成长到一定阶段,你可能会面临一个成长平台期的困扰,在此就进入了 “道中彷徨” 的徘徊期。这些困扰和彷徨很多都关乎选择,这期间是你发出 “路在何方” 之问的寻路期。最后,你坚定了道路

工程化思想总结

北城余情 提交于 2019-12-01 19:03:47
前言:本人和Jack两人创立Wonder科技两年已久,虽然公司还没注册,但我们的项目已经开发到1.2版本,由于种种原因项目停止了开发。Jack开始了写书的道路,而我,也面临了找工作的事情,在找工作之前,我想先把这两年学习的东西进行总结和复盘,如若能帮助大家,也算是做了件好事。 先给大家介绍下我们的项目,以及我们如何使用工程化思想进行项目重写和重构。 我们开发的是Web端3D WebGL引擎和在线编辑器,其中Jack主要负责引擎,我主要负责3D编辑器以及公司官网、论坛、托管平台等系统开发。在这期间我也熟悉引擎并开发了引擎中的自由相机功能,以及集成到编辑器中使用,为此,我想总结下这两年来跟随Jack学习到的工程化思想。 一、中大型项目的根基:测试驱动开发 刚接触TDD的时候我想大家肯定也和我一样迷茫,到底花费那么多时间写测试有没有必要,尤其是前端开发同学,很多公司不要求你写测试,所以大环境下前端程序员基本不会写测试。我先列举自动化测试的优点: 降低成本:程序员以自动化测试捕捉到bug,成为一个测试用例,就把这个bug固定住,以后有任何重构让这个bug重现都能报错,这样我们不需要测试团队 减少时间:只需要写一遍测试就可以一直复用,效率肯定比人工高 正确性:只要测试代码覆盖越多的产品代码,就能保证产品代码的正确性 代码复用性、可扩展性:当项目发展到一定量级,没有自动化测试支撑的项目

程序员需要了解的硬核知识之CPU

有些话、适合烂在心里 提交于 2019-12-01 18:50:02
大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和 CPU 打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CPU CPU是什么 CPU 的全称是 Central Processing Unit ,它是你的电脑中最 硬核 的组件,这种说法一点不为过。CPU 是能够让你的计算机叫 计算机 的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。它是一种小型的计算机芯片,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 CPU 实际做什么 CPU 的核心是从程序或应用程序获取指令并执行计算。此过程可以分为三个关键阶段: 提取,解码和执行 。CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器(英语:Random Access Memory,缩写: RAM ),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的 临时数据存储介质 CPU 的内部结构

程序员需要了解的硬核知识之CPU

柔情痞子 提交于 2019-12-01 18:46:47
大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和 CPU 打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CPU CPU是什么 CPU 的全称是 Central Processing Unit ,它是你的电脑中最 硬核 的组件,这种说法一点不为过。CPU 是能够让你的计算机叫 计算机 的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。它是一种小型的计算机芯片,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 CPU 实际做什么 CPU 的核心是从程序或应用程序获取指令并执行计算。此过程可以分为三个关键阶段: 提取,解码和执行 。CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器(英语:Random Access Memory,缩写: RAM ),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的 临时数据存储介质 CPU 的内部结构

程序员需要了解的硬核知识之CPU

柔情痞子 提交于 2019-12-01 18:45:39
大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和 CPU 打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CPU CPU是什么 CPU 的全称是 Central Processing Unit ,它是你的电脑中最 硬核 的组件,这种说法一点不为过。CPU 是能够让你的计算机叫 计算机 的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。它是一种小型的计算机芯片,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 CPU 实际做什么 CPU 的核心是从程序或应用程序获取指令并执行计算。此过程可以分为三个关键阶段: 提取,解码和执行 。CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器(英语:Random Access Memory,缩写: RAM ),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的 临时数据存储介质 CPU 的内部结构

程序员修炼之道:从小工到专家3

天涯浪子 提交于 2019-12-01 18:44:55
软件的成败与否,很大程度上取决于用户的看法,要“让你的用户参与权衡”,但也要知道进退, 知道何时止步,不能画蛇添足。对于现阶段的我们而言,处在知识经济的时代,知识资产变得尤 为重要,一不小心就会被这个社会淘汰,作者明确提出了自己的观点和建议,为我指明了方向。 当你编码时: 代码需要演化,它不是静态的事务。 重构 不要试图在重构的同时增加功能。 在开始重构之前,确保你拥有良好的测试。 采用短小,深思熟虑的步骤。 从一开始就可以把可测试性构建进软件中,并且在把各个部分连接在一起之前对每个部分进行彻底的测试。 在项目开始之前: 需求需要挖掘,而不仅仅是收集。找出用户为何要做特定事情的原因,而不是他们目前做这件事情的方式。 建立需求文档:把形式化的模板做备忘录 好的需求文档会保持抽象 Chap1 注重实效的哲学 程序员所应该遵循的实用主义原则。 我的源码让猫给吃了:出现错误时,要诚实,不要推诿或者找借口。要提供各种可能的解决方案与后果并 与他人沟通,而不是提供借口。 软件的熵:这是著名的破窗户原理。项目中一个小的、无人料理的问题可能带来后续编码时的懈怠,从而 造成更大的问题。不要容忍任何小的错误,解决它或至少打上TODO标签。 石头汤与煮青蛙:这个小节很有趣,它讲述了小的变化如何能渐进式地演变为大的变化。 一方面,在面对一个毫无生气的团体、试图催生积极的变化时,可以去做第一个带来改变的人

[转]为什么国外程序员爱用 Mac?

╄→гoц情女王★ 提交于 2019-12-01 18:43:17
原文:http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么 专业人士也对 Mac 情有独钟 呢?从个人使用经验来看我想有下面几个原因: 1、Mac OS X 是基于 Unix 的。这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 windows 开发人员,我想你会在 windows 上装一套cygwin 环境吧?你不用 flex/yacc,grep,screen,ssh,make?好多 open source 的项目只提供cygwin/gcc/make 的编译环境。Mac 就是基于 BSD Unix 的,所有这些都是 built in 的。 2、开发环境。c/c++/java/perl/python/php/ruby/lisp,各种 shell,应有尽有,直接支持,非常方便。你要在 windows 上开发 C++,要装个 Visual Studio 编译器吧?或者其他的 C++ 编译器;你要开发 Java,你要下载 Java SDK 吧,说不定还要一个 Elipse 或者 Netbean;你要用 Perl

代码工程化思想总结

限于喜欢 提交于 2019-12-01 18:36:19
前言:本人和Jack两人创立Wonder科技两年已久,虽然公司还没注册,但我们的项目已经开发到1.2版本,由于种种原因项目停止了开发。Jack开始了写书的道路,而我,也面临了找工作的事情,在找工作之前,我想先把这两年学习的东西进行总结和复盘,如若能帮助大家,也算是做了件好事。 先给大家介绍下我们的项目,以及我们如何使用工程化思想进行项目重写和重构。 我们开发的是Web端3D WebGL引擎和在线编辑器,其中Jack主要负责引擎,我主要负责3D编辑器以及公司官网、论坛、托管平台等系统开发。在这期间我也熟悉引擎并开发了引擎中的自由相机功能,以及集成到编辑器中使用,为此,我想总结下这两年来跟随Jack学习到的工程化思想。 一、中大型项目的根基:测试驱动开发 刚接触TDD的时候我想大家肯定也和我一样迷茫,到底花费那么多时间写测试有没有必要,尤其是前端开发同学,很多公司不要求你写测试,所以大环境下前端程序员基本不会写测试。我先列举自动化测试的优点: 降低成本:程序员以自动化测试捕捉到bug,成为一个测试用例,就把这个bug固定住,以后有任何重构让这个bug重现都能报错,这样我们不需要测试团队 减少时间:只需要写一遍测试就可以一直复用,效率肯定比人工高 正确性:只要测试代码覆盖越多的产品代码,就能保证产品代码的正确性 代码复用性、可扩展性:当项目发展到一定量级,没有自动化测试支撑的项目

前端开发的前景

霸气de小男生 提交于 2019-12-01 18:34:46
原文链接: https://zhuanlan.zhihu.com/p/33215570 阿里妹导读:很多童鞋在上次的问卷调查里表示,希望多推出一些前端方向的内容。今天为大家分享一篇关于前端工程师职业发展的文章,抛砖引玉,期待与大家一起交流探讨。 我是成曰,目前在蚂蚁金服数据平台部任职前端工程师,从事数据中台产品的研发。目前对前端架构与质量、用户体验、TypeScript比较感兴趣。 以下我说的都是个人观点,比较宏观粗浅,主要针对的是前端工程师本身,没有深入技术和业务细节,请谨慎参考。 职能概览 前端工程师首先是个程序员,其次也是个软件工程师,他们工作在离用户最近的地方,负责人机交互和用户体验,虽然叫“前端”,但其实他们的工作边界其实已经很宽了。 展望未来,我想前端的工作会继续分化,也会继续融合,分工是工业革命以来社会高效协作的主要推动力,以后很长一段时间应该也会维持这种形态,融合的原始推动力也是提高效率。分化和融合是不断的演化和互吸收转化的,不过核心的东西我想还是不会有太大变化。 观点 1.继续分化(领域、行业、技术栈) 2.继续融合(端技术、Web全栈技术、人工智能与端技术) 3.核心不变(计算机科学本质、软件工程思想与实践、程序员职业素养) 1. 继续分化 领域 前端领域会继续分化,例如阿里内部的前端就已经有中后台、图形、端技术、泛Node、开发者服务5个大方向了