- 浏览: 2871859 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
近日,whattofix.com 刊登了一篇 Daniel Markham 的文章《What Level Programmer Are You?》,文内将参差不齐的程序员按照技术水平分为从“只读”到“上帝”,共十一个阶段,以帮助广大程序员找到自身定位并从中发现自己发展方向。以下是文章摘要:
随着技术发展,编程悄然融入了我们的生活。我们已然离不开那些程序和编程语言。很多人都在不同程度地谈论着如何编程,而且也诞生出很多编程语言排行。那么程序员到底应该如何分级呢?
首先要明白什么是程序员?设计自己的 Apache Web 服务器的家伙?制作一个复杂的 Excel 电子表格的家伙?能自己开发 RPG 的家伙?Minecraft 的玩家?这些都属于程序员的哪一个级别呢?当我们说:“每个人都需要了解编程”,这句话意味着什么?
所以,我们需要制定一个程序员的等级,以便让程序员们了解自己所处的环境和发展方向。
Level 1,只读——这些人了解如何设置 Web 服务器的方法,在普通情况下能够通过配置方式获取工作所需要的东西。作为基础他们知道如何使用文本编辑器和文件系统,还拥有移动和操作文件的能力,如 ZIP 和 FTP。也能在结构中使用抽象符号,解析方式以及系统技能。
Level 2,脚本——能够编写线性脚本告诉电脑要做什么,能够学习和使用自己的符号。如果有足够的时间和书面指导,他们可以使用 bash 或是 VB 编写一些简单脚本,为自己做些实用的事情。
Level 3,管理员——这些人了解库和 API,并有能力学习更多。他们知道不管使用什么脚本语言都都需要连接库。如果他们遇到问题,可以通过阅读使用手册解决,或是在网上搜索库并利用找到的结果。在工作中他能够发现或是开发自己的符号(使用 struct 编写函数或是声明)。大多数系统程序员都处在这个等级阶段,Excel 的初级宏系统用户也同样处在这个阶段。
Level 4,Object-Dot-Method——刚开始学习 coupling 和 cohesion,他们着手组织自己的脚本面对公共对象、私有成员和方法。这里有六周编程奇迹,介绍 .NET 程序员。这些人能玩转导向,了解库和构建类。如果不使用类,他们也能够创建自己的模块或是代码文件。高级脚本用户可远不止这样。有一些高级 Excel 商店和股票经纪,他们使用自己 VBA 作为基础代码,而没有意识到自己处于这个级别。
Level 5,多重框架——一旦上升到这个级别,将会遇到各种各样的麻烦。常见编程下一阶段就是能够使用多重框架。这些人可以编写C#,但也知道如何创建表格和编写 SQL 语句;可以编写C,同时也会使用 JavaScript 和 HTML。这两个技能并不代表他们就是大师,只是要学会在理解同一个问题上,需要通过多种不同的方式来找寻答案。
Level 6,初级建筑师——这阶段的人才算是真正的从事编程工作。他们每天的工作就是要深入了解库和 API。并不是要求他们必须记住这些,但是要了解用不同的模式去实现自己的目标。想要在 Win32 中绘制?可能需要一些 GDI 资源句柄。他们知道句柄是在系统表某处的一个 UInt32 hash——常见的 Win32 范例。想在自己的库中添加 JQuery?新库里有很多格式,他们应该知道怎么做并且能解释其工作方式。与此同时,也要开始学习如何重构自己的代码并突显亮点,增强其代码的质量,慢慢的你会理解。
Level 7,资深架构师——他们的时间是用来创建自己的 API,平台或是库。也许这是一个大项目的必需品,也许只是他们个人想把自己的学识推广出去。他们开发的系统为用户解决实际问题,所面对的受众群是 Level 5 程序员。在这个阶段需要深入 OOAD,模板和实践。我们大多数人在刚开始都会搞得一团糟,不能理解怎么用更加简单的方法将复杂事情简易化。这个阶段需要历经很长时间,需要不断修正错误,开发高质量的系统并创建更复杂、灵活性高的库。当他们从外面接受几个月的特定培训回来,肯定希望团队其他人都能理解他做了什么。
Level 8,Meta——在某些时候,希望这些人能意识到大量复杂信息投入结构和构架中可以更好地形容特定域的语言,其受众群体是 Level 4 程序员。代码的复杂性增大,就能减少代码的数量,DSL 开放可以将代码展示到各种地方。总之,他们将成为程序员使用脚本语言方面的作家。通过易于使用的脚本和导向将他们的系统开放给初学者。可以分别学习这些技能,但大多数情况是在复杂的结构后,最终走向 DSL 的道路。很快就能看到最初规模:利用自己编写的 DSL 能够很好的理解问题。
Level 9,Functional Nirvana——慢慢接近奖金,他们要开始学习如何编写功能规划。其受众群是 Level 3 的程序员。FP 是必不可少的,帮助他们轻松的脱离 DSL,并能够大幅度减少代码数量来解决问题,同时拥有较高的扩展性。某些函数式编程语言在系统运行时可以 hot–swap,慢慢就会感觉到已经接近先进水平。FP 是一切问题的答案。虽然 FP 可以减少 BUG,提升开发效率,但代码也相对来说很难学。程序员的脑海里需要时刻记忆很多东西——他们必须要记住繁琐的复杂符号。但是,结根到底 FP 只是道路上的一个阶段,很多类似 OOAD。
Level 10,面向语言设计师——他们查看所有新创建的编程语言程序。惟一的区别是新语言应该做什么。他们了解如何开发面向对象语言,语言功能和脚本语言,知道每一个语言在何时何地的用途。其受众群是 Level 2 程序员。他们对每一个项目都会问:“这个项目我们需要什么样的语言?”在项目完结后他们将会得到一个很好的工具,既解决了问题并易于理解还扩展了入门级程序员。大多数项目不需要面向语言设计师。
上帝级别,计算机科学家——要么就是编程的顶峰要么就不存在,这个取决于自己的观点。这个就是科学规划,在里面有很多很酷的东西。任何一个人都是其受众群体。但重点不是在于做人们想要的东西,而是促进学术的发展。因为大多数编程能力水平都是基于人而言,人们居住在世界各地,也是必要条件之一。如何简单的在两国之间相互来往?
你在这里可能受到很多启发,例如,首先学习函数式编程再学习 OOP。你也可以开发自己的编译器,这不是大学的乐趣吗?或是程序集,或是真正理解集理论,或是如何开发适用于数据库与编程数据的结构。或是开发你的第一个编程工具。
这些是我所看到的大多数程序员所遵循的道路。
发表评论
-
开源中国的 IT 公司开源软件整理计划介绍
2015-04-27 09:19 835为了方便大家检索开源软件,促进开源在中国的进一步发展,开源中 ... -
40 个超棒的免费 Bootstrap HTML5 网站模板
2015-04-11 16:12 2835Bootstrap 是快速开发Web应用程序的前端工具包。它 ... -
前端与后端的测试工具组合
2015-01-15 13:03 2185在Java领域,Apache, Spring, JBoss ... -
离开自己的安乐窝
2015-01-03 13:30 656以下是我对世界的看法: 在一个你熟悉的地方,舒 ... -
废水变清洁能源:新型太阳能装置净水产氢
2013-10-18 09:21 828加州大学的科研团队将太阳能电池与微生物燃料电池巧妙的整合在一 ... -
Nagios 4.0 正式版发布,企业级监控系统
2013-09-25 08:50 979Nagios是一个监视系统运行状态和网络信息的监视系统。Na ... -
如何管理一个远程团队
2013-07-04 06:50 1307过去的几个月里耗尽了大量的精力一直在争论 ... -
2012 年最佳 Android 应用
2013-01-09 18:35 9842012 年最佳 Android 应用 • ... -
我跳槽是因为他们的显示器更大
2012-05-29 22:39 1473好的技术人员向往具有很强的企业技术文化氛围的工作场所。但 ... -
听命于我!让机器人流上道德的血液
2012-04-01 11:47 1473随着机器人变得越来 ... -
我国科学家发现新中微子振荡 有助研究反物质
2012-03-09 18:49 1212大亚湾中微子实验国际合作组发言人王贻芳在北京宣布,大亚湾中 ... -
IBM 新专利: 通过代码提交评判程序员
2012-03-06 12:34 1159觉得老板只需要用软 ... -
为程序员量身定制的12个目标
2012-01-15 23:12 893对程序员们来说挑战自我非常重要,要么不断创新,要么技术停 ... -
Android之父Andy Rubin访谈录
2011-10-20 22:44 1158就在昨天的Ice Cream Sandwich发布会结束以 ... -
Firebug 1.8 功能
2011-09-12 08:40 1116著名的Firefox网页调试开发插件 Firebug 1.8 ... -
湖南长沙真人《愤怒的小鸟》主题公园
2011-09-04 08:38 1100好吧,首先是山寨暴雪主题公园,现在又有现实版的《愤怒的小鸟 ... -
中国第一代程序员列传
2011-08-12 22:36 12011年7月,仅仅47岁的“中国第一程序员”求伯君彻底退 ... -
美国IT圈家谱
2011-07-21 21:52 1393为什么全球的科技新闻/互联网新闻/创业新闻都被美国所占据? ... -
DONA,可爱的智能机器人乞丐
2011-04-17 21:17 1082大家一定见惯了地铁中的乞讨人,不过都已经审美疲劳了 ... -
奥巴马:白宫耶!买台iPad,过份吗?(误)
2011-04-17 21:11 951记得奥巴马马上任时,大家爱聊的一个话题是他能不 ...
相关推荐
【程序员虚拟面试系统】是一种专为程序员设计的模拟面试平台,旨在帮助开发者通过模拟实际面试场景来提升自己的技能和应对面试的能力。这个exe版工具提供了一个便捷的方式,让程序员可以在家里或者任何地方进行自我...
通过阅读和分析代码,你可以学习到如何在Java中有效地实现各种算法,了解Java的类设计、数据结构使用(如ArrayList、LinkedList、HashMap等)以及控制流和递归等编程技巧。 4. **算法分级攻略**: 题目的分类可能...
### 狼狗入圈系统知识点解析 #### 一、背景与问题定义 - **背景**: Leo@CTO 针对对象导向编程(Object-Oriented...- Leo@CTO的OOP分级体系为软件开发者提供了一个清晰的学习路线图,有助于他们不断提升自己的技术水平。
模糊逻辑可以用来建立模糊规则库,应用在自动控制、图像识别、决策分析等领域,特别是在机器人技术中与类神经网络结合,提高了机器人的智能水平。 最后,文章提到一个具体的应用案例,即使用模糊逻辑进行围棋比赛的...
《算法与LeetCode解题策略》 在计算机科学领域,算法是解决问题的核心,它是一系列精确的步骤,用于指导计算机执行特定任务。...在这个过程中,不断实践、反思和优化,才能真正提升算法水平,成为一名出色的程序员。
为了简化参数的管理和使用,系统采用了参数分级手段来对磨床关键零部件的参数进行分类,将用户不关心的尺寸封装起来,并将参数划分为三类:主动参数、从动参数和通用参数。主动参数是系统提供给用户并允许用户修改的...
LeetCode题目难度分级明确,从简单到困难,满足不同水平的学习需求。 二、Java语言在LeetCode中的应用 Java是一种广泛应用于企业级开发的强大编程语言,具有优秀的性能、跨平台能力和丰富的类库。在LeetCode上,...
3. **技术限制**:在某个时间点,由于技术限制,即使是最优秀的程序员也可能无法完全避免所有潜在的安全漏洞。 #### 漏洞检测的基本原理与扫描器类型 - **基本原理**:利用网络扫描技术来探测目标系统或网络中的...
Code Wars 的 Kata 分级从新手(Sandbox)到高级(Grandmaster),涵盖了各种难度,让不同水平的程序员都能找到适合自己的练习。每个 Kata 都有一个明确的目标,例如实现特定的功能、优化算法或修复代码错误。参与者...
在大数据时代,数据挖掘和数据分析研判成为了企业和组织提升决策水平、增强竞争力的重要手段。在处理海量数据时,传统的数据仓库和分析工具已经难以满足需求,因此需要采用更为高效和先进的大数据仓库管理技术和工具...
1. **文化观念差异**:中国的程序员往往将编程视为一种艺术创作,强调个人创意和技术美感;而在印度,软件开发被视为一项工程活动,强调标准化和流程化管理。 2. **企业规模差异**:印度拥有数量众多的大规模软件...
- 题目难度分级明确,适合不同水平的开发者进行练习。 - 平台支持多种编程语言,包括Python,便于开发者选择自己熟悉的环境进行解题。 2. **Python在LeetCode中的应用** - Python是一种简洁易读的高级编程语言,...