※ 引述《Superxixai (洪粉吱已)》之铭言:
: 小弟小时候第一个接触的语言就是C++。
: 虽然过了很久很久,
: 但是在即将迈入2022的时刻,
: 教9年级左右的孩子,
: C++是不是依旧能够启发他们的程式天份?
: 有没有相关的八卦?
那要看你怎么定义程式天份
如果是讲算法跟资料结构 用C或Python下去操比较快
如果是讲计算机结构 一样也是用C跟OS下去操
国中时 C++是我第一门接触的语言
那个时候要做游戏的难度不低
C++可以说是最低门槛 自己看书学语法是没问题
但是没人带很难知道要怎么开发出软件还有连结library的观念
最多就是写一些console自娱自乐
也曾经转而写PHP跟SQL做网站跟操作数据库 (当然怎么设计DB的观念也是近乎没有)
后来在GameMaker上用GameMaker的脚本语言写游戏
才渐渐真正有"写的东西有用"的实感
新手买语言书自己K 只是习惯程式语言跟熟定义而已
很容易在"学这个到底要怎么做出真正能用的程式"的疑问中迷茫
坊间有不少目的导向 例如以制作游戏、网站为前提开发的书籍
是可以跳过纯语言的枯燥阶段 但新手的瓶颈是在于不知道为何要这样写
最后很多问题还是回到基本功
其中又以C++跟C为甚 很难让你跳过基本功
C的基础是pointer 如果要开发程式 大部分的API 甚至OS提供的library都跳不过
C++虽然用物件导向 还有换个名字的pointer: reference
但是STL给新手的陷阱更多
const char* str = obj.getName().c_str();
为什么之后引用str会crash? 这个问题可能有些菜鸟工程师都会犯
for(auto it = v.begin(); it != v.end(); ++it) {
v.erase(it);
}
新手会问 为什么我按照书上写的呼叫erase 编译也能过 为何还会crash?
语言本身也有毛
struct A {
A(int a, int b) : b_(b), a_(b_ + a + 1) {
}
int a_;
int b_;
};
为何A(3, 5).a_不是9?
所以建议
要嘛old fasion写C
要嘛写go或python