level 15
回复:
这里我也列个提纲,准备加入豪华午餐:
https://gist.github.com/FrankHB/00731fedf07b4ea271afa70a5cdc8d9d1.目的。
如果是上班,要你撸什么用什么,当然基本上靠视频都是低效做法。如果是瞎忽悠要你调研自己不清楚的东西还负责选型,出问题谁背?这样的单位趁早跑路。
如果是自己撸……没事撸毛GUI?还用C艹?
技术选型能力比起语言使用能力在这里很可能更重要。
2.所谓GUI。
三流科班和野路子出身的往往喜欢望文生义GUI=G+UI=G+U+I,结果把经典GUI成功的如WIMP metaphor比如全给扔了。不是说不能创新(比如说从桌面迁移当然应该有变化),但是一问三不知,是罪。
3.抽象层次。
这里着重需要婊的是所谓“立即模式”GUI(IMGUI)。说白了就是早年性能等限制导致的一个实现泄漏出来的抽象,近些年居然好意思开宗立派了……
对付这类玩意儿,一概同没有AST的辣鸡编译器一样论处。
(另一个要婊的是FRP和UI相关的倾向,但这个也坑着。)
这类玩意儿,倒不是说学了完全没用,一些时候也就是需要这样解决实际问题。但完全没基础的学这个就是毁三观的歪门邪道。
4.依赖。
首先,没法划清边界,无原则依赖具体实现的所有软件都是半吊子。GUI也不例外。需要拎出来说是因为历史原因造成了GUI不方便跨平台的错觉,而实际上只是因为有兴趣和耐心搞GUI框架的,大多对正常姿势的软件工程方法和码农手段一窍不通而已,自然上梁不正下梁歪。
这里需要着重婊的是凡学GUI先讲Win32的Win32中心主义(即便没有Win32外的跨平台需求)。实际上Win32的实现从ReactOS等途径扒出来就可以看到极其狼狈,而接口抽象设计上也是非常拙计。应用层实现不算C的辣鸡风格API的问题还有一大坨破事,比如WndProc加个void*会死?——这类烧饼问题基本上现代的其它解决方案都不会有。强行Win32能和其它方案同等质量地完成项目的确可以算是炫技,但另一方面在实现出来前,光是选型就是炫蠢了。
MFC为什么zz?主要原因也是类似,真正干活的几乎全是外包给Win32的。所以就学习而言MFC还不如Win32,即便项目做起来代码看起来没那么屎(但这也仅相对Win32而言)。架构嘛,Document-View的过气笑话也不值得浪费时间。至于CArray被吊打几条街之类的玩意儿就不提了,反正设计MFC的在非GUI的问题上往往更加外行。
所谓的DUI(Direct UI)是另一个典型反面教材的例子。DUI原本只是微软的某个实现中发明的架空HWND(Win32窗口句柄)的技巧,说白了是一种hack,结果莫名其妙被没见过世面的井底之蛙搬过来变成了架构创新层面的大煋闻。实际上,如果真按所谓DUI的精神,世界上的GUI从来都是DUI的,只不过实现了Win32之后HWND成了DUI的一个实现极烂的代理。会有这种错觉,主要原因恐怕就是上面所说的Win32中心主义,以及本身学习能力、眼界、想象力和品味太差,空有生产烂轮子的山寨水平这个原因了。
至于BCB这样(某种意义上包括整个所谓的RAD行业)的过气玩意儿,不予多评论(现在叫BCB的和VC6一样古董我就不多戳穿了)。就说一点:鼓吹BCB好转进C
#?那为什么不直接学C#
?
2017年07月08日 09点07分