有些东西真的得喷一下了
很多未来的程序员就是被悲催的教程带坏的
我自己酝酿了很多教程:Dot Net是否下过雪(C#)、What happened(电脑综合)、SGML当年也是一枝花(HTML)等等,
为了面面俱到,我也找了网络上很多的教程,自己也会偶尔看一些其他的教程(偶是十八般武艺样样稀松),
结果就不得不喷一下看到的很多东西……
现在养成了一个习惯,搜索教程时都会加一个 site:cnblogs.com ……
一。授艺不精
1.教其然而不教其所以然
先来一个笑话:
妈妈问小明:如果你有一个梨,我再给你两个,你会有几个梨?
小明:不知道。
妈妈大怒:你不是说你是算数第一吗
小明:我们学校算算术用的都是苹果。
很多教程都是这样:
-
Ⅰ百度知道可以看见很多问怎么PS流光字的问题,最佳答案一般都是一个教程。好了,之后一群人又来问这是怎么做出来的。那个教程讲的很细,每个选项选什么都有,就是没有原理和介绍。
-
Ⅱ还有一个C语言教程的商业实例,讲到了指针的应用,先是业务逻辑讲了一大堆(都是讲前台窗口交互的),之后直接上代码,指针乱的……
-
ⅢC#的也一样,当年开发博客系统时,想要开发RSS导入器,还真被我找到了一个教程,结果里面全都是“添加以下代码……运行,可看到……”之类的,一点解释都没有。
教程,主要讲的就是应用,没有各模块的解释,教其然而不教其所以然,读者根本不知道如何应用教程里的知识
2.照本宣科,术语连篇
这个在某些网站(例如MSDN)是必要的,但在教程里就不好了。想当年学C语言时,看到指针就晕,于是找了本教程,找到指针一章,结果我更晕了:
- Ⅳ里面全都是讲内存分配、内存原理、操作系统内存管理,一个通俗的解释都没有
于是我放弃了C,转战ASP.NET。先学HTML,结果当年还是小白的我更晕了:
- Ⅴ哪个标签的解释都看不懂(现在想起来应该是直接翻译W3C的标准)
术语是必要的,但照本宣科,术语连篇是不可取的
3.东拼西凑
不多说了,总之看到很多教程都是东取一点,西抓一点,东拼西凑,估计完全是为了赚人气
二。误人子弟
1.实例漏洞百出,逻辑混乱、过时
学生作业漏洞百出就算了,再怎么说教程应该要精益求精的
但是一些教程实在看不下去了,
- Ⅵ一个ASP.NET教程,做一个留言板网站,结果SQL漏洞、XSS注入、权限提升……漏洞一堆(准确说也不是权限提升,它的权限控制完全是靠JS禁用按钮,不需要登录都可以删除、修改)
- ⅦC#教程,计算器,逻辑乱到1+1*2等于2,一旦有多运算符马上乱了
2.软件or标准
倒是这可能是个人习惯问题……
- Ⅷ找HTML教程时,发现很多打着HTML教程的旗号的,开篇先讲Dreamweaver或FromtPage,之后就是鼠标拖一个XX,鼠标拉一个DIV……这是软件教程,不是HTML教程。
- ⅨC语言还好,但也有不少用大篇幅讲各种IDE的
这些教程,也导致了很多网页设计师、程序员在所见即所环境下如鱼得水,一上代码就晕。
三。毁人不倦
1.技术、规范落后
抱歉这个小问题被我提到毁人不倦的高度……
现在的标准更新太快了,教程很多都无法跟上标准。没法跟上最新的标准也没问题,就是别太落后了。技术、规范落后也是一种误导。
- Ⅹ一个不错的C#教程,结果讲ASP.NET,加代码都是加在<%%>里,用的HTML规范还是3.2的
- ⅩⅠ在Ⅷ提到的一个讲Dreamweaver的2010年的HTML教程,终于接触到了HTML代码本身了,给的实例:
<
HTML
>
<
HEAD
>
<
Title
>Hello world</
Title
>
<
SCRIPT
LANGUAGE
=
vbscript
FOR
=
"bt1"
event
=
onclick
>
<!--
msgbox "Hello world"
-->
</
SCRIPT
>
<
INPUT
name
=
bt1
type
=
"button"
VALUE=点击我>
</
HTML
>
乱成这样就是严重的毁人不倦。
2.混淆概念
这就是一个大错了,有的是概念不清楚,有的就是作者的技术问题了,还有不少是东拼西凑的后遗症。
原来看到百度知道上的一个问题,就是问document.write搬到.cs文件里为什么报编译错误,Page_Load为什么不能放到aspx页面里,估计就是被ⅩⅡ所提到的教程害的
- ⅩⅡ一个C#教程,讲ASP.NET做Helloworld,给的实例(说明是用C#做的ASP.NET页面,输出Helloworld)
<HTML>
<HEAD>
<TITLE>Hello world</TITLE>
<SCRIPT>
document.write(
"Hello World"
);
</SCRIPT>
</HTML>
还有代码后置版的protected
void
Page_Load(objectsender, EventArgs e)
{
Response.Write(
"Hello World"
);
}
-
ⅩⅢ一个C#教程,说是讲解Winsock,结果照搬了百度百科Winsock一节后,直接上了WCF的代码
这些混乱严重影响到了读者的编程积极性和愿望,很多读者也因此放弃了编程。无论是写一篇短文,还是系列教程,都要注意不要犯以上的错误。每个地方、细节,都要照顾到。
这篇文章,既是喷一下那些悲催的教程,也算是自我提醒下,写出更好的教程