学编程就像选家具:去宜家还是从种树开始?

2023-10-11 15:50
文章标签 编程 家具 宜家 种树

本文主要是介绍学编程就像选家具:去宜家还是从种树开始?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学编程就像选家具:去宜家还是从种树开始?

发表于 2014-01-14 15:2113330次阅读| 来源 CSDN46 条评论| 作者 张红月
编程 web开发 经验分享 入门指导
摘要:在奥巴马都号召大家学编程的年代,越来越多的人加入到这个行业中,当然也有人好奇,到底该如何学编程?有人把学编程比作挑选家具,但前提必须要知道自己想要什么样的家具?

在日常生活中,常常会听到:“我想学编程”,看似简单的一句话,仔细分析,其中的奥妙可不少。你想学什么样的编程,是一个简单的Hello World,还是开发移动应用呢?本文作者Scott Hanselman把这个问题比喻成选家具,是去宜家还是从种树开始呢?并且与大家探讨了码农、黑客、程序员、开发者和计算机科学家之间的区别?下面是笔者对原文的翻译。

最近有朋友向我提问:说他想学如何编写代码,但不知道该如何下手以及该从哪里起步?

 

学习如何编码——是去宜家还是从种树开始?

好比想当木工,你可以选择从种树开始,然后砍树、打磨,最终制作家具。或者,你也可以直接去宜家,也可以介于这两者之间。

直接修改WordPress主题就好比是去宜家,自己动手编写一个Web框架就好比种树,通常都是因为没有自己喜欢或者现成的“树”。无论是自己“种树”还是直接选择现成的,你都必须决定自己想要的家具。 

好吧,该从哪里开始?

每当我听到有人想学编程时,我都非常高兴,下面这些网站都是非常不错的学习资源:

  • Codecademy.com
  • KhanAcademy.org/cs
  • Code.org
  • learncodethehardway.org
  • Udacity
  • CodeSchool
  • Harvard's CS50x at edX
  • CoderByte

码农、黑客、程序员、开发者和计算机科学家的区别? 


你可以认为这些词的意思都一样。也许你还听过Geek、nerd和dweeb,但知道他们的不同还是非常重要的。了解这些不同你就可以清楚地知道你到底所属哪一个层次: 

  • 码农:通常是发现问题并解决的人,但解决方案并不完美;
  • 黑客:通常是底层专家,技术过硬,曾深入某领域研究,并且非常精通;
  • 程序员:写代码并了解算法,经常独自专注地工作;
  • 开发者:是真正厉害的多面手,熟悉多种系统和语言,可以熟练交叉使用。知识广泛的专业人士,有良好的沟通和团队协作能力;
  • 计算机科学家:知道并了解计算机的工作原理,精通理论层面,数学达人。

如果你已经接近其中的一个层次,你可以想想今后应该朝哪个方向迈进。

假设是Web编程?

在几年前,如果有人告诉你想学编程,你可能会编写个Hello World程序,或者安装下Visual Basic,拖一个Button控件,然后用消息框弹出个Hello World。 

这或许就是大家在入门时遇到的第一个程序,作为JavaScript和Web Service入门,我认为这是很好的开端。但关键是,并不是所有的应用程序都是Web应用程序。应用程序会使用来自服务端的数据、发送通知、文本、Email和Tweets等信息,甚至是一个非常小的应用程序,它也有可能从Web服务器上调用一些数据。每个应用程序都会实现相应的功能,并且应用在相应的地方。所以你要搞清楚,你所说的编程是指Web编程还是其它编程。

现在,如果你想成为一名程序员,或者更加精准地说,你想成为一名高效的Web程序员,那么你就想弄清楚,当用户在网页里输入twitter.com时,浏览器到底做了些什么,原理是什么?如果你想成为一名木匠,你就想了解树是如何长成,如何挑选好的木材;如果你想成为一名赛车手,你就想知道引擎的工作原理;亦或者是,如果你想成为一名管道工,你就必须知道水源。

你弄清“我想学习编码”的真正含义了吗?

问题的根本所在是你到底想从事哪方面的代码编写?网站开发、网站设计、还是编写移动应用程序、还是想编写一个小工具、这些都是完全不同的终点,并且它们都会有很好的入门教程,如果你想深入进去。

  • 对Web开发感兴趣?

任何相关“Learn to Code”的网站都非常不错

  • 对硬件感兴趣?

可以考虑Raspberry Pi或Arduino

  • 对你每天所使用的代码/历史代码很感兴趣?

可以去阅读Charles Petzold的“Code”

  • 已经通晓一定的技术但想走的更远?

订阅http://learncodethehardway.org

  • 想成为一名很好的多面开发者?

阅读Mike Gunderloy的“Coder to Developer”

写在最后

对于想学编程的人,他们完全可以从Web编程开始,学一点JavaScript然后开始编写Web应用程序。但如果你的兴趣愈加浓厚,你也可以钻研一些不同的编程领域,给自己增加更多锻炼的机会和发展空间。 

来自: hanselman.com

这篇关于学编程就像选家具:去宜家还是从种树开始?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/189128

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的