一百个你不应该继续用Dev C++的理由_fr0der1c的博客-程序员资料_dev c++怎么样

技术标签: c++  程序开发  

这篇文章来源于一家台湾网站,看完之后觉得很有感想,就分享给大家了。现在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
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/vencent7/article/details/40867703

智能推荐

微信开发一 : 测试号的申请及相关配置_放荡不羁的程序猿的博客-程序员资料

测试号地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index微信会自动分配APPID,APPSERCRET给你接口配置信息:     URL :  填写你自己写的验证接口   验证成功才能配置    例:http://qingtest.tunnel.

解决pip 19.1使用时可能编码报错utf-8:value.decode('utf-8') if six.PY3 else value_wongpp的博客-程序员资料

报错:value.decode(‘utf-8’) if six.PY3 else valueTraceback (most recent call last):File “/usr/local/lib/python3.6/dist-packages/pip-19.1.1-py3.6.egg/pip/_internal/commands/install.py”, line 524, in _wa...

520~我得到了人生中第一块树莓派~配置一下吧_小龙不会喷火的博客-程序员资料

文章目录一、小序二、树莓派运行需要的物品三、安装系统四、安装ftp服务1、遇事不决,update2、配置vsftpd3、重启一下4、在Filezilla里登录一、小序最近对树莓派感兴趣,主要是对用树莓派去搭建服务器感兴趣。不过很遗憾,学校的网络给的ip不是公网,但考虑学校整个是一个局域网,如果在学校范围内可以无限制的使用,也是很不错的。今天先把树莓派初始化一下吧!二、树莓派运行需要的物品①树莓派主板(我的是树莓派4B,嘿嘿,npy送的礼物)②电源适配器③SD卡,以及读卡器④外壳以上是必须的

基于vue的可视化编程_phlr5的博客-程序员资料_vue 可视化编程

基于vue的可视化编程网上找了几个开源的,下载下来一一试了下https://github.com/jaweii/Vue-Layouthttps://github.com/L-Chris/vue-designhttps://github.com/fireyy/vue-page-designerhttps://github.com/OXOYO/X-Page-Editor-VueVue-La...

MySQL自增锁模式innodb_autoinc_lock_mode参数详解_天下风流客的博客-程序员资料

innodb_autoinc_lock_mode这个参数控制着在向有auto_increment 列的表插入数据时,相关锁的行为;通过对它的设置可以达到性能与安全(主从的数据一致性)的平衡【0】我们先对insert做一下分类  首先insert大致上可以分成三类:    1、simple insert 如insert into t(name) values('test')    2、bulk insert 如load data | insert into ... select .... from.

随便推点

nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization_normal 和 uniform_Wanderer001的博客-程序员资料

1. 均匀分布torch.nn.init.uniform_(tensor, a=0, b=1)服从~U(a,b)U(a,b)2. 正太分布torch.nn.init.normal_(tensor, mean=0, std=1)服从~N(mean,std)N(mean,std)3. 初始化为常数torch.nn.init.constant_(tensor, val)...

HIDL详解-Android10.0 HwBinder通信原理(二)_Felix.Ma的博客-程序员资料_hwbinder vendor getservice transact

[Android取经之路] 的源码都基于Android-Q(10.0) 进行分析[Android取经之路] 系列文章:《系统启动篇》Android系统架构Android是怎么启动的Android 10.0系统启动之init进程Android10.0系统启动之Zygote进程Android 10.0 系统启动之SystemServer进程Android 10.0 系统服务之ActivityMnagerServiceAndroid10.0系统启动之Launcher(桌面)启动流程And

我的ubuntu使用桥接模式无法连接网络的原因!_qq_41620003的博客-程序员资料

ubuntu14.04.VMware12开门见山!我电脑桥接连不了网的原因,是因为我们学校校园网一人一账号,桥接相当于多了一个账号要上网!如果不是这原因,继续找吧,在网上查了一天多,还是学到不少东西的,就是有点郁闷...

中国首个氢能源乘用车格罗夫正式启动A轮融资 _weixin_33972649的博客-程序员资料

4月24日消息,中国首个氢能源乘用车格罗夫正式启动首轮融资工作。在上海车展现场,中金资本旗下基金、光大旗下基金和武汉东湖国隆股权投资基金管理公司与格罗夫汽车公司签订了合作意向协议。(从左往右)格罗夫氢能汽车公司董事长、格罗夫品牌创始人郝义国,中金资本执行总经理徐萌萌、光控特斯联大项目部政府事务总监施磊、东湖国隆总经理魏永新 2018年,中国石油...

Java事务不回滚的原因总结_weixin_30396699的博客-程序员资料

1、首先要检查数据的引擎,InnoDB支持事务,MyIsam不支持事务2、默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。 spring aop异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获runtimeexception的异常,但可以通过 配置来捕...

Java JDBC连接和使用详解_sunnyday0426的博客-程序员资料_java jdbc链接

1.1 概述这篇文章主要介绍了Java JDBC以及连接和使用详细介绍的相关资料,需要的同学可以参考下1.1.1 JDBCJDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基JDBC规范对应的api包。JDBC(Java DataBase Connectivity)是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不同类型的数据库

推荐文章

热门文章

相关标签