如何高效的向新手程序员们介绍编程语言?_怎么宣传编程语言-程序员宅基地

技术标签: php资料  php  php培训  php教程  php视频  


学习Java,他们都说很easy。

作为一名刚从斯康星大学麦迪逊分校计算机科学系毕业的大学生,我通过一些编程课程认识了很多使用Java的朋友。现在很多学校都在从别的编程语言(大多是C ++)转教Java,一项于2014年7月所做的研究表面截至调查时间为止,39个顶级美国CS项目已经有22个使用Java作为入门课程。

那么,到底是什么使得Java能从众多的教学语言中脱颖而出?纵观各个方面,我们发现了一些蛛丝马迹:

语法相对比较简单(相较于C语言和C++),难点较少(还是相较于C语言和C++)。语法越简单就意味着新手需要掌握的规律就越少,这对新手而言绝对不亚于一个福音。

Java相较于一些传统的教学选择,如C和C++,比较不容易出错,因为很多操作都会自动检查。如果你想要访问的数组超出了其界限或者使用空对象产生了异常,那程序就会通过漂亮的堆栈跟踪告诉你出了什么错误,哪里出了问题(直接将范围缩小到造成这个问题的源文件中)。与此相比,C语言和C++,如果访问了空指针,那么程序就像炸弹一样毫无预警地爆炸,丝毫不留给你任何有用的提示信息(除非你是在调试器中运行,所以我们必须学会使用调试器,以防万一)。而要是C语言和C++的数组越界的话,那就更悲剧了,因为在很多例子中,甚至会有内存中数组元素值莫名其妙被改写的情况。然后你只能面对着这个崩溃的程序,目瞪口呆、完全束手无策。这绝对是分分钟逼疯一个程序员的节奏!

有了垃圾回收器就意味着你并不需要亲自来管理内存。用new关键字创建对象之后,那它将永远保留在内存中(只要有任意一个地方引用即可)。而且使用完这个对象后,垃圾回收器就会为你清理掉这个对象。

Java在行业中的应用非常广泛,因此,从理论上讲,我们在学校里学到的知识可以直接转化成真正的工作。TIOBE编程指标将它列为第二门最为常用的编程语言。无论你是否同意TIOBE的准确分析,但是你不得不赞同Java被广泛使用的这个现状。

Java是面向对象的。你可以创建包含数据的对象,然后编写方法用来描述作用于这些数据的行为。

上面这些听上去真美!但是却并不完整。

迂回策略

几乎所有的程序员编写的任何语言的第一个程序都是“Hello World”。它所做的就是显示一些消息(传统上都会选择“HelloWorld”),然后退出,非常简单。下面是用Java写的HelloWorld程序:

view sourceprint?

public class Hello {

public static voidmain(String[] args) {

System.out.println("hello,world");

}

}

一些对于编程全然陌生的人就会心有疑问了 ,然后这时候如果你是老师的话,嘿嘿,麻烦就来了。想要一下子就能将所有内容通通解释给学生听,可能会成为压垮骆驼的稻草,所以,你最好采取迂回策略。

“请问,public是什么意思?”——现在没必要考虑这些,以后我们会深入探讨。

“class是什么?”——现在没必要考虑这些,以后我们会深入探讨。

“static是什么意思?”——现在没必要考虑这些,以后我们会深入探讨。

……等等,都可以这么说。

但是值得一提的是,无论是教什么内容,我们都应该将其分解成一块块容易消化理解的组成部分。封装(public关键字)、面向对象的编程(class和static)、数组(String[ ])以及命令行参数(args)这些重要的知识都应该适时地解释给学生。当然,对于那些尚处于编程启蒙阶段的新生来说,要想一口吃成个大胖子未免太过于天方夜谭了。我认识的很多朋友,他们在其他领域绝对算个佼佼者,但是碰到这些编程概念问题也立马一个头两个大。就像是在代数中突然引入这个:

一旦我们知道了这些符号的含义,那么理解起来似乎也没有那么困难。但是对那些才涉足这一领域的新生来说,这完全不亚于是无字天书啊。再则,迂回策略虽然鼓励了学生使他们不至于立马泄气,但是从另一个角度讲,却只是表面化地展示某种“神奇”成果,并没有分析解释其原理。但是我想说,如果你想成长为一名真正的教师,这种方法与你的理念应该是背道而驰、截然相反的。例如Hello World这个例子,

Java严格面向对象,并要求每一个函数(或“方法”,在Java中的说法)被放置在一个类中。如果你还没阅读过Execution in the Kingdom of Nouns这篇优秀文章,那我强烈推荐你去读一下。它的主要内容可以概括为,“倡导面向对象的编程就像是为客人量身定制服装一样”。向那些对if语句和for循环这些概念还是一团浆糊的新生解释面向对象的设计原则,绝对是个糟糕的“调用”。要着眼于将工作分解为一个一个可以写成函数的小片段,然后我们再回过头来讲什么是OOP。

Java规定,所有的对象都是以堆的形式分配的,所以所有的对象变量都是指针。现在你需要解释的是值和引用之间的差异,就像为什么int、boolean、float在赋值和比较时与strings的行为就是有所不同。类似于这些衍生出来的问题共同组成了一个一致性的解释工作原理的心智模式——作为程序员这个是必备——但是其过程异常艰巨。

Java对于开发程序(无论大小范围)而言或许真心是门超棒的编程语言,但是对于初学者而言这家伙绝对算不上友好。

那么我们应该教什么语言呢?

既然如此,那有人会问,那我一开始先学点简单的概念,然后在这些的基础上再深入学习Java,不就成了?!但是很抱歉,Java表示臣妾做不到!

那么我们该怎么做呢?下面这两种合情合理的开启编程之路的方法或许能让你有一种醍醐灌顶之感:

低水平的起始点,然后一步步提升难度。教你如何使用计算机,这样你就可以直接用C语言写一些简单的程序。然后再在这个基础上,构建更高层次的计算机科学结构体系。

高水平的起始点,然后再一步步降低难度。先教授计算机科学的理论和一种编程语言,这种编程语言得非常容易实现,并且毋须担心底层机器的细节,例如Python,在这里就是一个挺不错的选择,因为它不受正面加载Java需求的影响。然后再分解计算机是如何一步步实现这些理论的。

现在,第2个方法变得越来越风靡,从本文开篇提及的研究——Python已经超越Java成为了使用最广的编程入门语言这一事实——可见一斑。

无论你选择哪种方法,关键是要保持学生对此的兴趣。如果你选择的是低水平起始点的方法,可以使用Arduino或机器人技术套件,以便于学生可以在物理世界中观看他们写的代码。话说,我刚一开始用C语言为一支机器人团队编写代码,我就被这个奇幻的世界深深地迷住了:看着120磅的钢管和转动马达因为我写的代码而动起来的时候,那感觉真心是太神奇、太不可思议了。如果你选择的是高水平起始点的方法的话,不妨利用库中资源来制作视频游戏或者其他图形程序。

编程特别的不可思议。除了你的想象力还有表达能力,其他没有别的东西可以限制你。找到学生的兴趣切入点,寓教于乐,从易到难,循序渐进,教会他们如何使用工具,授之以鱼不如授之以渔,让他们在编程的世界中自由疯狂地成长。

免费领取LAMP兄弟连原创PHP视频教程光盘/《细说PHP》精要版,详情咨询官网客服:http://www.lampbrother.net

http://yun.itxdl.cn/online/cto/index.php?u=5 这,是一个牛X的课程 CTO课程

http://yun.itxdl.cn/online/server/index.php?u=5  移动互联网服务器端开发课程

http://yun.itxdl.cn/online/weixin/index.php?u=5  微信开发课程

http://yun.itxdl.cn/online/yingxiao/index.php?u=5微营销课程

http://yun.itxdl.cn/online/phpcms/index.php?u=5phpcms二次开发课程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u019524703/article/details/42964831

智能推荐

nginx配合fastdfs使用-----python上传测试_fastdfs python 上传-程序员宅基地

文章浏览阅读176次。开始前需要先准备好fdfs的环境https://blog.csdn.net/weixin_44834666/article/details/105686059一、安装py3Fdfs包pip install py3Fdfs二、编辑py文件from fdfs_client.client import Fdfs_client, get_tracker_conf# 创建客户端 client...._fastdfs python 上传

plsql创建用户,创建表空间以及删除用户,删除表空间_plsql删除创建的用户-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏5次。1.创建表空间create tablespace [表空间名:例如{newszgcp}]datafile [表空间所在地址:例如{'D:/StudySoft/OrServer/admin/orcl/newszgcp'}]size [表空间大小:100M ]autoextend on next [扩展:50M ] maxsize unlimited; 2.创建用户create..._plsql删除创建的用户

Java SE GUI编程_p.add(new textfield(10))含义-程序员宅基地

文章浏览阅读169次。GUI编程_p.add(new textfield(10))含义

Codeforces 1119B 贪心二分_codeforces - 1119b-程序员宅基地

文章浏览阅读191次。https://codeforces.com/contest/1119/problem/B不改变原数组的值,复制一份,要求1-k连续,则1-mid区间内判断子数组从大到小排序后,每两个相差不大,比较均匀 i+=2倒着的目的是前大后小 能装前一定能装后 尽量装更多的 累积高度和跳着累积高度和,如果<=h 可增加更多的瓶子,否则高度太多瓶子太多,减小瓶子数量const int maxn..._codeforces - 1119b

Vue+SpringBoot+Mybatis+Mysql前后端分离案例_vue3 + element+pringboot + mybatis + mysql导出功能的前后端-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏23次。Vue+SpringBoot+Mybatis+Mysql前后端分离案例(二)前端开发main.js代码如下import Vue from 'vue'import App from './App'import router from './router'import axios from 'axios'Vue.prototype.$http= axiosVue.config.prod..._vue3 + element+pringboot + mybatis + mysql导出功能的前后端代码

LTP与jieba词性标注对比_jieba ltp对比-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏7次。词性标注对比¶LTP 使用的是863词性标注集,其各个词性含义如下表。TagDescriptionExampleTagDescriptionExampleaadjective美丽niorganization name保险公司bother noun-modifier大型, 西式nllocation noun城郊cconjunc..._jieba ltp对比

随便推点

国标GB28181协议EasyGBS视频平台启动程序时报“服务已存在”导致启动失败_gb28181device程序无法正常启动-程序员宅基地

文章浏览阅读112次。我们去年接了很多EasyGBS的项目现场,由于国标GB28181协议的特殊性,EasyGBS能够支持区域平台级联,构建三级平台级联模式,有效的解决资源共享问题,实现行政级别高等级的安防平台,可以查看下级单位的视频资源。最近有很多用户反馈现场在启动EasyGBS的时候,无法正常启动,我们以windows版本为例,启动界面如下:可以看到启动到这里就卡住了,没有继续运行。从打印的信息中看到“EasyGBS的服务已经存在”,所以我们需要到服务中看一下是否有这个服务,在命令窗口输入“service_gb28181device程序无法正常启动

64位Windows10系统安装.NET Framework 3.5_.net framework 3.5windows 10 x64位-程序员宅基地

文章浏览阅读469次。手动安装.NET Framework 3.5_.net framework 3.5windows 10 x64位

每日10行代码149:用python实现定时截图_python中每隔一段时间取一张照片-程序员宅基地

文章浏览阅读293次。背景:工作中遇到一个实际问题,有一个系统 在完成一个需要很长时间的操作时,系统没做日志,也不提示啥时完成的,只能靠人工去看,这时我就想用软件截图来监测一下。import pyautoguifrom datetime import datetimeimport timewhile True: img = pyautogui.screenshot(region=[1000,500,400,400]) # x,y,w,h print(type(img)) capture__python中每隔一段时间取一张照片

Java基础整理(二)_"java把\"333ddd\"转化为double"-程序员宅基地

文章浏览阅读1.9k次。Java基础学习整理_"java把\"333ddd\"转化为double"

RFC791(IP协议)——协议格式_rfc791协议-程序员宅基地

文章浏览阅读2.2k次。3.1 协议头格式先看一下协议头的全景图,每一个竖线代表一个字节Version: 4比特标记当前报文使用的协议格式,本文件描述的是第4版本。IHL:4比特表示请求头32比特字长度(单位是32比特),它的计算是从第一个字节开始。一个正确的包头最小长度的5。Type of Service:8比特标记发出服务希望的传输质量的参数。这些参数用来指引网络进行包传输时实际参数的选择。某些网络提..._rfc791协议

Bee-Box 虚拟机下载及安装-程序员宅基地

文章浏览阅读9.1k次,点赞4次,收藏14次。Bee-Box 虚拟机下载及安装 Bee-box官方称呼BWAPP,buggy web Application 这是一个集成了各种常见漏洞和最新漏洞的开源Web应用程序,目的是帮助网络安全爱好者、开发人员和学生发现并防止网络漏洞。包含了超过100种漏洞,涵盖了所有主要的已知Web漏洞,包括OWASPTop10安全风险,最重要的是已经包含了OpenSSL和ShellShock漏洞。..._bee-box

推荐文章

热门文章

相关标签