第一门编程语言选谁?
说明:这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹,希望这篇文章能够帮助他们少走弯路,顺利地迈入软件开发的大门;如果您是一位有经验的软件开发者,或者是关注计算机教育的同行,也敬请提出宝贵意见。
最近,台湾知名技术专家蔡学镛先生写了一本《编程ING》,宣称“人人都能学会程序设计”。作为一名IT教育工作者,这本书引发了我的兴趣,翻看之后,共鸣之处不少,结合国内计算机教育的现状,产生了颇多感触,于是就有了这篇小文。
一、为什么学生视编程为畏途?
先当学生后当老师,不知不觉之中我在大学里己“混”了十多年,我发现,进入计算机专业就读的学生,最初至少有一大半对真实的软件开发根本不了解,是“一张白纸”,不幸的是,学了四年之后,许多张“白纸”又变成了许多罐“浆糊”,带着对软件开发可能是畏惧也可能是无所谓但绝对不是喜欢的感触离开校园。
编程真的那么没劲?那么难和枯燥?
我写了将近二十年的代码,虽然不靠编程吃饭,但也似乎勉强可算是个老程序员,我对编程的看法可总结为两句:何以解忧,唯有编程!我经常在想一个问题:编程其实是很有趣很好玩很实用并很有成就感的一件事,为什么会有这么多的学生视编程为畏途?而我们的计算机教育,为什么在打掉学生对编程的兴趣方面“如此成功”?
蔡学镛先生在《编程ING》给出了一张图:
图 1 正向兴趣循环是学习的关键
我认为这张图道出了问题的关键——学习过程中的“正向”兴趣循环是否成功地建立。
强烈的兴趣与不断获得的成就感是整个学习过程的“引擎”,它为学生完成整个学习任务提供源源不断的强大动力。有无数的事实支持这个观点。
传统的教学观点认为,本科的主要教育目标之一是为学生在本专业领域未来的发展“打下扎实的理论与实践基础”,所以从一开始就要“严格要求”,“科学训练”。
这个观点不能说错,但我认为,我们的计算机教育,尤其是针对初学者的教育,首要的任务是引发兴趣。没有兴趣,一切免谈。
我所了解的事实是:计算机专业的学生有不少视编程为畏途。其原因在于我们的现有计算机教学方式从一开始就给了这些学生“痛苦”的编程体验,不幸的是,这种体验在后期枯燥的专业课学习中不断得到强化,学生最终对编程敬而远之或畏之如虎。
事实上,教育学研究早己指出,成功的高效的教学应该是这样的:循序渐进,由浅入深,步步为营,兴趣导向。
教师的职责,不是将知识“灌入”学生的大脑,首要的任务是引发学生的兴趣,鼓励他们去探索未知的领域,主动地学习和吸收知识,培养技能,积累经验。在这个学习过程中,教师要成为一名优秀的导航员,给学生绘出航线,鼓励他们出海远航,解决他们在航行中所遇到的困难,并帮助学生建立学习的“正向”兴趣循环。
对编程的“第一印象”很重要啊!由此,引发了一个很有趣的问题——应该选择哪一门语言作为学生的第一门编程语言?
二、你学的第一门编程语言是什么?
在国内的大学中,当前大多数选用C作为学生的第一门编程语言。这其实并没有太大的问题,C的重要性无须我多说。其实问题的关键不在于选择C教学,而在于以哪种方式去教。
很不幸,国内许多C语言的教材都将主要的精力放在对C语法细节的介绍上,课程考核方式又很古板——很多院校采用闭卷考试,出一堆的选择题和填空题。典型的题目是将一段代码砍掉一两句,让学生“填空”。有哪位高手是通过做这些“填空题”学会编程的?上机也流于形式,让学生反复折腾几个“黑底白字”的“玩具般的”小程序,学了一个学期,学生连一个有点用的程序都写不出来……
这种僵化的教学方式,足以毁掉多数学生对编程的兴趣。
我个人认为,C不应该成为针对大多数学生所讲授的第一门编程语言,我们的教学体系,应该给学生提供更多的选择。
针对初学者所讲授的第一门编程语言,应该具有以下的特点:
(1)必须是“有趣”的,能诱导人去“动手”和“思考”。
(2)需要对初学者屏蔽不必要的底层技术细节,以免分散他们的注意力。
(3)这种语言必须足够简单,但同时又具备足够的能力编写出实用的程序,从而让学生能比较容易地获得成就感,感悟到软件开发的魅力。
(4)这种语言必须能充分地体现现代软件开发的基本思想和技术成果,为学生进一步深入学习打下基础
(5)花在这门编程语言上的时间和精力是有回报的,掌握了它,就掌握了一个强大的工具,可以在今后的学习中使用这个工具进行实践和创造。
另外,这门编程语言的学习,应该有助于初学者正确理解与体会到以下的编程思想:
(1)分而治之:将大问题切分为小问题。
(2)组件化与模块化:以搭积木的方式“构建”出软件系统。
(3)算法思想:针对实际问题建立数学模型,设计计算机算法,最终编程解决问题。
同时,这门编程语言的学习,应能有效地培养出以下的编程基本功:
(1)调试代码的能力。
(2)撰写可读性强、扩充性好、易于复用的优质代码的能力,培养良好的编程习惯。
(3)查找技术资源与阅读技术文档的能力。
也许一门编程语言的学习无法达到上述的所有要求,但组合几种不同的编程语言就差不多了。下面,我介绍几种适合于初学者入门的编程语言。
三、适合于入门的脚本编程语言
为了教初学者学会编程,蔡学镛先生的《编程ING》选择了REBOL编程语言,这个语言确实比较简单,而且蔡先生的书图文并貌,用它来训练编程的基本技能很合适,但REBOL这门语言似乎过于小众化了一些,而且书中缺乏有力的能引发初学者兴趣的应用实例。
依据我的经验,如果初学者能动手写出几个有用的实例,他喜欢上编程的可能性会大大增加。
以下是我粗略归纳的很容易引发学生成就感的几个技术领域:
1.图形图像与动画、多媒体
2.游戏
3.网络应用
4.拥有可视化界面的桌面应用程序
5.能跑在手机上的应用程序
就我个人看法,第一门语言比较适合采用脚本式的编程语言。
1 2 3 下一页
大猪小猪的幸福照
装萌的陈大猪
看他装逼的样
哈哈,这几张好看点,美女老婆帅哥老公
下面有点模糊哦!红米前照的
今天就到这了,大猪小猪主题会幸福的哦!小猪万岁,大猪下跪……
红米开发者选项USB调试的开启方法
今天用红米手机连接豌豆荚死活连接不上,突然发现了一件神奇的事情,红米居然找不到开发者选项。相信大家在设置菜单找过(开发者选项)但是木有,手机驱动不上,很麻烦,连不上电脑这可咋办呢。
以下是开启开发者选项的方法:
首先进入设置选择“关于手机”
进入后手快速点击“Android 版本”5次 会有提示,直到出现“您已处于开发者模式”
然后退出,重新进入设置菜单,你会发现“开发者模式”已经出现了
对于在某些浏览器上添加百度云收藏失败的解决办法(以360安全浏览器为例)
以前一直用谷歌浏览器,但是发现装的插件越多浏览器就越来越开,在电脑换成XP系统之后随手装了个360,顺便用了下360安全浏览器,以前一直不屑一顾的360产品,其实也做得挺人性化的,于是就一直用着,前段时间安装了一下百度云收藏插件,结果安装上去了,但是怎么点击都没反应,以前谷歌浏览器可不会出现这个问题的。
下面是解决办法:
首先打开360浏览器的整理收藏夹窗口
然后在整理收藏夹窗口新建收藏
接着在网页标题栏填写合适的文字,比如写:添加到百度云收藏
网页地址内填写如下代码
javascript: void ( function (d) { var e = d.createElement(‘script’);e.byebj= true ;e.src = ‘http:
单击确定完成添加
之后打开网页,在标签栏点击添加到百度云收藏的快捷方式
就可以看到页面顶部出现收藏到百度云的提示了
这里仅以360安全浏览器为例,作为参考,其他浏览器的使用方法差不多的。
关于小米抢购和一些常见秒杀活动的经验技巧
今天是一周一度的小米开放购买日,十万台红米和十万台米3还要多少万台小米盒子在中午十二点开抢了。对于小米抢购真是有人爱的死去活来,有人恨得牙根痒痒。有的狂热的米粉为了抢一台小米手机真是连续奋战十几场到最后却什么也没抢到,对于此你难道还能冷静的继续等待下一场抢购么?
对于秒杀和抢购难道拼的仅仅是运气?
运气很重要,但只靠运气是万万不可的。
当然影响秒杀抢购的重要因素必然少不了一台配置不错的电脑,和上网流畅的网络环境。
只具备这些是远远不够的,技巧才是最重要的。无论是秒杀还是抢购,活动商品的数量都是有限的,而参与活动的人数是不确定的。真正需要抢的不是商品,而是速度。需要和跟你一同下手抢购的人拼速度,大家都慢了,你稍微快一点,你就赢了。但大家的秒杀速度都在提升的情况下,你不去锻炼速度就永远无法抢到。
有一些网上常见的技巧需要注意:
1、提前登陆
2、同步电脑的时间和网络时间
3、测试服务器的时间是否与电脑时间同步
4、测试网络延时需要的时间
5、在活动开始前几秒钟进行刷新或者点击(前几秒需要准确判断点击抢购到服务器就接收数据的延时)
6、很多抢购需要输入验证码,练一下打字速度吧
当然除了这些我还有其他想说的东西,现在单说小米抢购。目前在网页抢购小米会出现一个比较常见的现象,就是点击之后会出现提示人数太多需要排队神马的,排完队之后不会进入抢购页面而是直接进入首页,这种情况必然叫很多米粉懊恼,上周帮同学抢的时候就是这样,这个木有办法。
但是今天我抢到了一台红米,抢购技巧是什么的?技巧就是手机版的小米商城。很多人可能会忽视掉小米的这款软件,当然理由很多,手机的网速怎么可能比电脑快呢?这样想的人肯定很多,但是电脑虽快却总是排队。
存在即合理。当今天偶然尝试之后我就爱上了这款软件,电脑上N多个页面都在排队的时候,手机版客户端居然进入抢购页面了,然后输入验证码选择手机颜色就ok了,然后电脑上排队的页面点击了个继续购买也弹出了购买成功的页面。
这是今天的战果,买给媳妇用。
另外今年接触了一些其他的抢购活动,比如前一段时间聚划算的整点聚,现在天天特价的一元秒杀。
这俩活动拼的是实力,首先秒杀的商品数量较少,但是活动参与者比较多。另外秒杀会弹出验证码,验证码内容不定,有纯汉字的有拼音全拼也有拼音首字母的,目前一般商品基本在2-3秒抢购完成,论坛里有一部分朋友整天抢并且写了软件经常练习,速度已经非常牛B了,想我等一般人无法第一时间判断出验证码的类型并且在1-2秒内输入的就不要瞎想了。
支付宝中信银行的银行卡有个活动,以前是300-300每周三抢两次。现在有满50-5的活动,每天中午14点开抢,名额好像是4000人,基本在14:01前可以支付成功都可以抢到,不需要输验证码,点击下一步输入支付密码即可。抢了几次普通人能抢到。
对于抢购秒杀只是商家的一种营销手段,希望各位朋友可以理性对待,重在参与,抢不到不要怨天尤人,毕竟商家的主要目的不是送东西而是赚人气赚眼球。
顺便吐槽一下前一段时间做淘宝晕客服有人咨询为什么每次秒杀我都秒不到,你们欺骗消费者。当是很礼貌的跟他介绍了什么叫秒杀。最后对方给我一个差评。我真想慰问一下那个脑残所有的亲人。
所以对于秒杀抢购,理性待之,得之我幸,不得我命,切勿自暴自弃怨天尤人。
聊城大学学生证补办流程
十一国庆和女朋友去泰山玩了一下,结果损失惨重,弄坏相机一部,损失人民币若干,学生证两个,遗失或被偷物品若干。
国庆收假就要忙着补办学生证先,本来以为晚上能收到相关的补办流程什么的,也可以少走弯路,结果居然没找到,下面就说说具体的补办流程。
首先,需要到学院教务处找负责教务的老师领一张补办学生证的表格。
然后,回去认真填写,贴上照片。这里需要注意如果要补办火车票优惠卡,请在表格最上方和丢失原因里面写一下。
接着,需要在申请表相片的地方盖章。盖学院的章,我们学院是在一个负责后勤的副院长那里盖。
之后,需要办理挂失。拿着盖好章的申请表去西校老办公楼找校报编辑部进行挂失,这个地方不太好找,在6楼,好像是613吧,上了楼梯挨着楼梯口的那间,再上一层是广播台的。挂失需要交10元钱。交钱之后那里的老师会登记一下,然后盖章。
然后打钱给一个叫曾宪禄的老师,卡号可以咨询班长。补办学生证一个6元,优惠卡一个7元。需要去银行柜台办理,最后转账的回执单要拿好。(我想说这几块钱还要排一两个小时的队真TM@#¥&……)
最后一步了,拿着转钱的回执单和盖了各种章的申请表给教务处老师拿回去,等着就好了。
需要说明一下:聊城大学补办学生证是在每月20日集中办理的。请尽量在接近20日的时候去办理。
使用批处理命令批量复制文件到一个目录下每个文件夹下
最近在使用中遇到这样一个问题,需要将两个文本文件放置在每个目录下作为说明文件,而目录数量成百上千,手工复制必然会累死,于是上网查找解决办法,经测试完全可以解决问题。
解决方案如下:
建立一个叫文本文件的文件夹,放置在磁盘根目录,我是放在F盘。
将需要复制的文本文件放在 F:\文本文件\中。
记事本新建一个文件,复制以下代码,粘贴。
修改该代码中两处 F:\粤语广播剧\多伦多ears 为你需要复制的目标目录。
然后点击保存。保存时注意不要存成txt文件,自己定义文件名后缀为bat,即批处理文件。
双击执行即可。
@echo off
for /f “delims=” %%i in (‘dir /b/ad F:\粤语广播剧\多伦多ears ‘) do (
xcopy /s F:\文本文件\. “F:\粤语广播剧\多伦多ears\%%i\”
)
pause
代码说明:
本段代码实现功能为批量复制F:\文本文件\目录下的所有文件到F:\粤语广播剧\多伦多ears\下的所有子目录中去。
WordPress禁用自动保存自动修订功能,彻底解决文章ID不连续问题3.6.1版本可用
有很多WordPress博客的固定链接中使用了文章ID,但是WordPress由于种种原因导致了文章ID不连续的问题,也经常有博友在论坛中提问要解决这个问题,但是很少能够得到他们满意的答复。WordPress 3.0 之后的版本都会有个自动草稿,每发表一篇文章就会占两个ID号,目前还没有禁用的方法。
最近在倒腾WordPress,也遇到了这个问题,最揪心的是发布一篇文章浪费好几个id,WordPress自动存了好几份草稿。
下面讲一下我最终的解决方法:
首先找到wp_confing.php文件,在文件中添加如下代码:
define(‘AUTOSAVE_INTERVAL’, 36000000 );
define(‘WP_POST_REVISIONS’, false );
有一种说法说要放在一下这段代码后面才会生效
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname( __FILE__ ) . ‘/’);
另外可将以下代码放置在主题function.php文件中,可以解决ID连续问题
function keep_id_continuous(){
global $wpdb ;
$lastID = $wpdb ->get_var( “SELECT ID FROM $wpdb->posts WHERE post_status = ‘publish’ OR post_status = ‘draft’ OR post_status = ‘private’ OR ( post_status = ‘inherit’ AND post_type = ‘attachment’ ) ORDER BY ID DESC LIMIT 1″ );
$wpdb ->query( “DELETE FROM $wpdb->posts WHERE ( post_status = ‘auto-draft’ OR ( post_status = ‘inherit’ AND post_type = ‘revision’ ) ) AND ID > $lastID” );
$lastID ++;
$wpdb ->query( “ALTER TABLE $wpdb->posts AUTO_INCREMENT = $lastID” );
}
add_filter( ‘load-post- new .php’, ‘keep_id_continuous’ );
add_filter( ‘load-media- new .php’, ‘keep_id_continuous’ );
add_filter( ‘load-nav-menus.php’, ‘keep_id_continuous’ );
add_action( ‘admin_print_scripts’, create_function( ‘ $a ‘, “wp_deregister_script(‘autosave’);” ) );
remove_action( ‘pre_post_update’ , ‘wp_save_post_revision’ );
下面的这一段代码参考了作者小虾的方法,原文链接http://xiaoxia.de/keep-wordpress-post-id-continuous/
常用系统的伪静态规则列表(rewrite规则)
windows平台虚拟主机实现伪静态(URL Rewrite)的流程:进入虚拟主机控制面板,点“ISAPI筛选器 ”,点击“开启自定义的URL静态化支持”,再修改/others/discuz/httpd.conf 在里面添加您自己的规则即可。
注意,所有规则放在一起可能会有冲突,只放置你需要的规则即可。
用301重定向实现网站不带www与www域名的跳转
网站解析上线之后一般会有带www的和不带www的两个,通常未做任何处理搜索引擎会索引两个域名,而网站的权重也会随着域名的分散而分散。解决此问题的办法通常是通过301重定向来实现的。我这里主要说一下windows主机,用IIS架设的服务器通过Rewrite组件来实现的办法,当然一般Apach主机是通过修改.htaccess文件来到到目的的,其他还可以通过域名解析或者有服务器操作权限直接在系统管理员配置区完成301重定向。
对于windows主机,若服务器支持Rewrite重写可以在网站根目录外一般叫做other的文件夹,在下面找httpd.conf文件,用记事本打开该文件,并在下面写入如下代码(请将域名换成自己的域名)
RewriteCond %{HTTP:Host} ^guangboju.net$
RewriteRule (.*) http:
这条规则的意思是,如果访问是guangboju.net,就跳转为www.guangboju.net。
如果一个站点上绑定了很多域名,全部都要跳转到一个,则第一行就要修改为
RewriteCond %{HTTP:Host} !^www.waiting8.com
意思是如果不是www.waiting8.com就跳转到www.guangboju.net。
如果绑定了多个,如
①waiting8.com
②www.waiting8.com
③guangboju.net
④www.guangboju.net
仅仅不带www的跳转到对应www的,则添加两组规则即可:
RewriteCond %{HTTP:Host} ^guangboju.net$
RewriteRule (.*) http:
RewriteCond %{HTTP:Host} ^waiting8.com$
RewriteRule (.*) http:
1
2