这篇文章来源于一家台湾网站,看完之后觉得很有感想,就分享给大家了。现在NOIP复赛使用的DevC++4.9.9.2都是10年前的老东西了,还有无数的大学教授甚至要求使用Win8的学生安装DevC++,也不管装上之后能不能用。感觉新一届码农被这个坑爹的“IDE”耽误得差不多了。(我真的不愿意称呼DevC++为一款IDE)

除开在NOIP混个省奖就走人的同学,能参加NOI的最后基本都被各个985、211大学的计算机系特招了,这些从一开始就受到这样的Coding环境的影响,真不知道他们以后怎么当码农。。

顺便一说,上次偶尔问到一个大学读计算机系的同学,居然意外的得知他们计算机系的C语言课在大一居然是公开课,课程难度跟学了一个月不到的高中生差不多,用的还是谭浩强的书(要知道在这个64位机器普及的年代,他的书上写的int范围居然还是-32768~32767),顿时感觉整个人都醉了。

我常常喜歡說,台灣的軟體業界落後國外十年,這不只是說說而已,很多地方都透露著落後的氣息,像是學校特別是如此,看看很多大學計概在教C/C++語言就知道了,清一色用的是Dev C++,每次看到我都會說

我的天阿! 拜託! 不要再用Dev C++了!!

所以用Dev C++到底錯在哪裡? 下面列出一些為什麼你不該用Dev C++的理由,特別是用來教學

Dev C++是已經死亡多年的專案!

是的,Dev C++這個專案已經陣亡多年,它的上一個穩定版本已經是十年前的產物,即使是beta版也早在六年前停止了開發

所以台灣的軟體產業落後國外十年這真的不是戲言,但或許你會說,停止開發又如何? 簡單好用,過了十年還是一樣簡單好用,但是事情根本不是那樣

學生連開新專案都學不會?

Dev C++最大一個特色就是不用開新專案就能編譯並執行程式,在我所知道的IDE裡這是極少數有這樣特性的環境,至少以現代的眼光來看盡是如此,如果是遠古時代的Turbo C之類的就不用比了,因為這樣特性的使然,一堆學生連開新專案都不會,你或許會說,不會開新專案又怎樣?

不會開新專案問題就大了,不管是debugger、編譯器設定、函式庫連結,這些都得先建出一個專案才能進行設定或使用,不管是Visual C++、Eclipse、Code::Blocks等你所能找到的所有現代IDE都是如此,連開新專案都不會就在寫程式就好像連走路都不會就在跑步一樣的糟糕

多數不清的臭蟲和怪異的行為

因為Dev C++專案已經陣亡多年,所以其中有數不清的臭蟲還有詭異的行為都沒有被修正,通常遇到了就像是鬼打牆一樣,debugger也是問題百出,常常有些同學的程式有問題拿來問我,我在檢查了多次都找不到問題所在,接著拿到其它的IDE下就能正常執行,最後發現其實是Dev C++本身的缺陷所引起的,只能苦笑著說是Dev C++發生鬼打牆,這對初學者有什麼影響?

這影響可大了! 初學者連最基本的東西都不會,他們需要的是一個可以信賴的環境讓他們可以知道什麼是對的什麼是錯的,但是今天這個環境連什麼是對的什麼是錯的都沒辦法確定,這樣有可能可以學好程式設計嗎? 有可能嗎?

無法教會學生使用除錯器

除錯器(debugger)是學習程式到底是如何執行的,以及找到錯誤的好幫手,有一點程度的程式設計師都知道這叫trace,也就是追蹤,但是因為Dev C++本身的問題,其除錯器的功能殘缺就算了,還有一大堆未知的臭蟲在其中,更慘的是搭配先前不用建專案就能執行,就算建了專案還得手動加入除錯的選項才能使用,使得用Dev C++教會學生正確地使用除錯器根本就是天方夜譚。

業界根本沒有人在使用Dev C++

就我所知道的業界根本沒有人在使用Dev C++,如果有的話請讓我知道,我真的很佩服可以用這樣破爛的工具還能在業界生存,肯定是神手中的神手

學生學會這樣的工具就頂多只能勉強寫作業而已,出了社會來到業界連個開新專案都不會,更別說是連結別人寫好的函式庫,甚至是自己寫函式庫給別人連結,我只能寫一個慘字!

老舊的編譯器

現在的C++已經跟10年前的C++有一段很大的落差了,新的特性一直在增加,因為Dev C++搭載的是當時的gcc,因此很多最新的特性都沒有,好吧,雖然我一點都不期待有多少老師或助教能知道那些新技術,像是李伯伯知道什麼是Boost嗎? 什麼又是technical report? 暱名函數? auto? 甚至是最基本的STL?

為什麼用Dev C++?

是的,我的標題騙人,我沒寫滿100個理由,或許有天我會補上,但現在我們先看一下主要我所認為使用Dev C++的理由

  • 懶,Dev C++開了檔案就編譯,簡單好用,連開新專案都不用解釋
  • Debugger? 那是什麼?
  • 阿我也只會用Dev C++
  • 阿我的老師教我用Dev C++,所以我也用
  • 學長寫的講議用Dev C++,所以我也用
  • 隔壁Lab的王小明他家的狗的前主人的二嬸婆也用Dev C++教學,所以我也用
  • 我只知道Dev C++
  • 阿就免錢的,我也買不起Visual C++
  • 寫論文拿來跑跑模擬數據就夠了
  • ….

啥咪? 連李家同都用Dev C++喔?

為什麼我會突然寫這篇? 其實平時看到大家在用Dev C++在心裡咒罵這些不長進的傢伙就算了,但今天偶然看見李家同大師的新書的心得

人人都能學會寫程式:李家同教你用邏輯思考學程式設計

然後看見這本書的介紹裡提到

在此強調我們用的程式語言是C語言,所使用的編譯器是Dev-C++4.9.9.2。讀者如果用錯了編譯器版本可能會出問題。

我的媽呀,於是我忍不住了,姑且不論這本書是不是他弟子捉刀寫的書,但即然都掛上李家同名號了,我想請問一下李大師

您多久沒寫過程式了?

讀者用錯了編譯器版本還可能出問題,不要告訴我這特異的行為又是Dev C++本身引起的問題,難道其中用了什麼樣的奇技淫巧在不同編譯器下還會出現不同的行為? 使用這樣破爛的工具教初學者真的好嗎? 初學者有辦法分得出來是Dev C++本身鬼打牆,還是自己寫錯了呢? 更何況是這本書聲稱的人人有功練?

選擇更好的工具,你可以不用變成李家同

我不知道李伯伯多久沒寫程式了,但是看他的書都用Dev C++就可以斷定,他或他的弟子都沒寫過什麼真正的程式,或許跑跑數據模擬還過得去,除此之外可能就有問題,更別說來教別人寫程式了,巨塔裡所謂的寫程式和外面的寫程式是兩回事

工欲善其事,必先利其器,使用破爛的工具只會造成程式學習上的重大阻礙,如果你的目標是成為李大師,或許你可以用Dev C++,否擇除了Dev C++以外,其實你還有n種選擇,在這裡列出幾樣我所知道的

Code::blocks

Code::Blocks是一款open source的IDE環境,優點是輕巧易用,而且該有的功能一樣都沒少,其本身就是一套強大的編譯工具,甚至cmake等編譯工具也可以產生Code::block的專案用來編譯,但缺點是目前只有英文介面,對於教學上比較不方便

Visual C++ Express

或許是為了搶佔學生市場,微軟佛心來的推出了免費的閹割版的Visual C++,也就是Visual C++ Express,雖然說是閹割版,也只是少掉了MFC之類商用的函式庫,其它該有的功能一樣都沒少,自動完成等等,它的debugger甚至還硬比其它IDE強大,可以回朔到上面的指令,而且它有中文版,拿來教學再好也不過,缺點是中文版的編譯器訊息也是中文的,英文的錯誤訊息已經夠難懂了,翻成中文後你連在Google貼上訊息找到半點有用的資料都找不到

Eclipse

Eclipse本身是用Java寫的IDE,並沒有限定在特定的語言上,因此從Java、C/C++、Python甚至到PHP都有相對應的IDE可以使用,而且該有的功能也一樣都有,比其它IDE棒的地方是它有各種不同的插件可以使用,例如可以整合版本控制系統,不過對於教學用途可能就用不到,而且缺點是很耗系統資源,特別是記憶體,這是用Java寫的程式一貫的毛病,對於老舊的教室電腦可能是很大的負擔,因此不是很推薦用於C/C++教學

wxDevC

不是說Dev C++死了嗎? 確實是死了,但其實沒有死透,後繼有人接手了Dev C++的開發,改名為wxDev C++,最主要是整合了wxWidget的設計功能,個人是沒有用過,但這專案一直都有在維護,應該至少會比目前的Dev C++好上很多,如果真的對Dev C++有執著的話不妨可以試試

最後

再一次,如果你是程式設計課程的助教、老師,拜託,花點時間學款現代一點的IDE吧,不要再用史前時代的破爛工具來殘害你的學生們,台灣軟體產業已經夠落後了,行行好吧

原帖地址:http://itindex.net/detail/9295-%E4%B8%80%E7%99%BE-dev

一百个你不应该继续用Dev C++的理由相关推荐

  1. dev c++ 调试时候发生软件崩溃解决办法

    dev c++ 调试时候发生软件崩溃解决办法 安装好dev cpp,准备调试的时候发现软件崩溃,这种情况很好解决.只要在工具菜单中点开编译选项,找到代码生成/优化一栏,将链接器的"产生调试信 ...

  2. npm run dev 报错:missing script:dev

    错误描述 运行 npm run dev 报错 missing script:dev 原因 查看package.json发现script中并没有dev而是serve.. 所以运行 npm run ser ...

  3. Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck

    Ubuntu系统开机的时候黑屏了提示如下 处理方法: 输入: fsck /dev/sdb2  然后回车,(如果你的提示是sdb1 这里输入的sdb1) 然后就是很多提示是否yes 的,  yes 回车 ...

  4. shell /dev/null

    /dev/null表示空设备,这里就是把日志记录到空设备里,就是不记录日志,Null 是一特殊指标值(或是一种物件参照 reference)表示这个指标并不指向任何的物件. 是一个特殊的文件,写入到它 ...

  5. linux定时任务定向到空,Linux 定时任务下 /dev/null 21 相关知识说明

    今天再使用Laravel任务调度的时候,需要在linux的cron添加如下代码:php /path/to/artisan schedule:run 1>> /dev/null 2>& ...

  6. linux dev controlC0,关于Linux的alsa音频问题解决

    到今日,在android平台上调试声音的方面终于有了进展,原来是需要改一个配置文件,目前只是解决了问题,具体原因以后再分析.硬件平台是6410+WM9714,软件平台是ANDROID.现在由于andr ...

  7. 设置vue运行npm run dev时候,项目在浏览器自动打开页面的方法

    在config/index.js找到dev:{}里面的autoOpenBrowser: 设置为true,重新npm run dev一次就自动弹出浏览器页面啦!

  8. shell之“/dev/null 21”

    shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 分解这个组合:">/dev/null 2>& ...

  9. 【imx6】/dev中fb和video的对应关系

    imx6q关于fb和video的设备信息 设备节点 root@myzr:/unit_tests# ls /dev/fb* -l lrwxrwxrwx 1 root root 3 Jan 1 1970 ...

  10. webpack打开项目命令_配置webpack中dev.env.js、prod.env.js,解决不同命令下项目启动和打包到指定的环境...

    前后端分离的项目开发中,我们有开发环境.测试环境.预生产环境和生产环境. 1.开发环境下调试接口的时候,一般都会有好几个接口地址(开发服务器上的,本地的,接口开发人员的,七七八八的接口地址),要根据情 ...

最新文章

  1. 数据流通与交易国家实验室成立 由上海牵头组建瞄准行业重大需求
  2. javascript实现yield
  3. 【数字信号处理】复数的另一种思考之平均风向测量(Python实现)
  4. nodejs——qureystring的作用
  5. java工程师占比_25岁零基础转行学Java,他如今月入16k
  6. 【知云】第十期:如何保障云上游戏安全?云盾+高防IP筑起云上安全高墙
  7. 网件刷breed_网件R6220刷breed变砖的维修
  8. Django 官方文档中文3.2 4.0
  9. python 操作微信 群发_python实现给微信公众号发送消息的方法
  10. vs官网下载安装太慢的问题解决
  11. C++基础面试问题总结
  12. 微信图片 自动上传到服务器,微信小程序怎样使图片上传至服务器
  13. android EditText 属性介绍
  14. python二级选择题与分析(10)
  15. 足坛十大恶汉:张玉宁黑社会风波 辽猛将踢爆眼
  16. java改变背景图片大小,设置背景图片大小相同的的Java应用程序窗口/屏幕
  17. uni-app 解决软键盘弹起输入框遮盖问题
  18. 计算机网络自顶向下方法知识点整理(部分)
  19. html5猜大王游戏,水果大王小游戏
  20. MP4文件格式分析及分割实现(附源码)

热门文章

  1. python读取raw数据文件_pythonrawkit如何从原始文件读取元数据值?
  2. 摄影测量学空间后方交会Python代码
  3. java事务和分布式事务详解
  4. PHP + 小程序开发过程
  5. 爬取百度图片的两种方法
  6. C++设计模式:UML工具及常用符号
  7. dart语言hello world
  8. python可以用于工业机器人编程_给工业机器人编程,最有效的办法是什么?
  9. 漏洞扫描工具Nessus的下载与安装教程
  10. PHP判断是手机端访问还是PC端访问网站