如何比较愉快地从Javascript转到C++开发? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的容
jakwings
V2EX    程序员

如何比较愉快地从Javascript转到C++开发?

  •  
  •   jakwings 2014-10-03 00:57:46 +08:00 5788 次点击
    这是一个创建于 4094 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前一直不愿学C++是因为用不着,现在头痛了。

    我比较关心的是Unicode文字处理,因为我要弄一个带代码高亮的文本编辑工具(然后进行各种改造)。
    第 1 条附言    2014-10-03 02:03:30 +08:00
    我对IDE没有大的要求,希望能够得到「思维方式」和「实际应用」上的指引。例如:
    1.使用数组和字符串时是否有必要了解所有细节?
    2.如何慢慢培养出适合C++编程的思维?
    3.怎样合理地使用回调函数?
    4. 在使用C++标准库时容易写出死循环代码的场合有哪些?
    5.有哪些比较推荐的对应Javascript常见操作的库?
    6. 如何快速理解C++的类型系统?
    第 2 条附言    2014-10-04 08:00:15 +08:00
    感谢大家的支持。已经准备好要开啃了,都学过Javascript了还像个零基础那样怕C++真是太不像样了。=_=
    31 条回复    2014-10-07 17:19:24 +08:00
    DearMark
        1
    DearMark  
       2014-10-03 01:10:40 +08:00 via Android
    开源的notepad++
    XadillaX
        2
    XadillaX  
       2014-10-03 01:11:24 +08:00
    -. - 我刚好是反一下的怎么办?

    已经成功从 C++ 入 Javascript 的坑。
    jakwings
        3
    jakwings  
    OP
       2014-10-03 01:19:49 +08:00
    @DearMark 意思是叫我直接研究Notepad++的代码来学习C++么?……

    @XadillaX 呃,怎么反客为主了……C++程序员怎么学Javascript的文章一搜一大堆了,假如你喜欢强调类型的话,可以用TypeScript再转换出等效的Javascript代码。
    jybox
        4
    jybox  
       2014-10-03 01:19:57 +08:00   1
    试试 JetBrains 的 IDE
    snowonion
        5
    snowonion  
       2014-10-03 02:04:37 +08:00
    啊呀.. po 是要「学 C++ 然后搞个带代码高亮的编辑器」呢, 还是「找个带代码高亮的编辑器来写 C++」 呢... ( 目测前者
    jakwings
        6
    jakwings  
    OP
       2014-10-03 02:0:51 +08:00
    @XadillaX 看大大你写的实用JS代码好像比我还多,求补充附言的提问。
    jakwings
        7
    jakwings  
    OP
       2014-10-03 02:08:49 +08:00
    @snowonion 嗯,前者。刚刚补充了附言。
    XadillaX
        8
    XadillaX  
       2014-10-03 02:51:02 +08:00
    @jakwings -. - 你怎么看的。实际上 c++ 搞会指针就差不多了。
    XadillaX
        9
    XadillaX  
       2014-10-03 02:55:34 +08:00
    @jakwings -. - 你怎么看的。实际上 c++ 搞会指针就差不多入门了。
    typcn
        10
    typcn  
       2014-10-03 04:55:22 +08:00 via iPad
    会用指针就入门了的话 估计20分钟全入门了
    Monad
        11
    Monad  
       2014-10-03 09:09:14 +08:00 via iPhone   1
    至少先用上支持cxx11的编译器
    不要陷入太多语言的细节 STL会用知道什么什么时候用什么内部是什么数据结构实现的就行了
    文件IO记得用c style的或者自己在上面封装一层 别去碰那堆stream
    fox000002
        12
    fox000002  
       2014-10-03 09:09:21 +08:00
    @typcn 会用指针不仅仅是语法,20分钟那是天才啊
    billlee
        13
    billlee  
       2014-10-03 09:39:47 +08:00   1
    1. 一定要检查数组边界。资源谁申请谁释放。不要信任外部输入的数据。用 C++11.
    3. C++ 还是少用回调函数吧,考虑用多态或泛型代替。
    4. 用 STL 还想写出死循环有点困难吧
    anubiskong
        14
    anubiskong  
       2014-10-03 09:55:20 +08:00
    讨厌C类语言
    光是一个头文件就感觉反人类
    还是js好
    jsonline
        15
    jsonline  
       2014-10-03 10:02:46 +08:00
    你为何不用Python
    sneezry
        16
    sneezry  
       2014-10-03 10:12:23 +08:00 via iPhone
    @anubiskong Node也有require不是~
    hjc4869
        17
    hjc4869  
       2014-10-03 10:23:39 +08:00   1
    C++用Visual Studio。
    jakwings
        19
    jakwings  
    OP
       2014-10-03 17:57:03 +08:00
    @XadillaX 看你GitHub一大堆JS项目……
    @jsonline Python换代比C++还快,有种要经常关注浏览器新特性的感觉,心累……
    onemoo
        20
    onemoo  
       2014-10-03 18:17:57 +08:00   2
    对于你的问题:
    1. 很有必要。这种语言离底层很近,那么就需要你也得了解底层。
    2. 见仁见智,主要靠时间。
    3456. 入门以后自然就知道了。
    至于IDE,找自己顺眼的就行,也没必要用vim、emace之类的折磨自己。

    如果你既没有C的基础,也没有其他编译型强类型语言的基础的话,还是从头开始学吧。
    =这个坑很大=
    具体用什么书入门,网上有不少推荐。我也来说几个:
    《C++程序设计语言》很多人会提到它。但它很厚。
    《C++ primer》会有很多人推荐。我觉得不太适合入门,它更像是一本手册。
    《Essential C++》是一本短小精悍的入门书。讲得并不全面详细,但是重点都讲到了。
    ...还有很多用于入门的书,一般网上有人推荐时都会说他们的推荐理由的,LZ自己权衡吧。

    深入的话:
    《Effective C++ 》《More Effective C++》也是肯定要看的。

    如果你一直走在C/C++的路上,肯定需要深入了解更深一层的东西:
    《深入理解计算机系统》 这本书其实并没有多“深入”,它广泛地讲解了计算机系统的知识。适合你了解代码之下的种种。
    《程序员的自我修养链接、装载与库》 难得的国人写的好书!

    当然不必把上面的都看了才动手,重要的是入门之后就动手编码,实践中你会学到更多的东西。你就能知道要如何走C++之路了。

    P.S. 我看了上面这些都觉得头大,这个坑真大!LZ想好要不要入坑吧...
    ryanking8215
        21
    ryanking8215  
       2014-10-03 20:41:10 +08:00   1
    从c++到js还是比较愉快的,反过来,很难!
    vinceguo
        22
    vinceguo  
       2014-10-03 21:45:06 +08:00   1
    有点C++基础之后,看Thinking in C++不错。
    jsq2627
        23
    jsq2627  
       2014-10-04 01:03:08 +08:00   1
    C++是个大坑,慎入。
    除了C++语言本身,CS基础课也要学好。数据结构、算法、计算机体系结构、编译原理,如果想做C++程序员这些东西逃不掉。

    其实我是个C++初学者,以前没用C++做过作业之外的东西。最近在做一个 Online Judge 系统,在用C++写网站以外的部分。之前一个月时间都在学习 CMake 和搭建合适的 Emacs 环境。最近刚开始写实际的代码,有些小众的库(我这次用到的是 librabbitmq-c,早些月在一个 iOS 项目里还用过 libpjsip)是C语言写的,还得自己加一层OOP封装才好用。今天刚刚解决了子进程 stdin\out\err 的重定向问题,要理解几个 POSIX API,也是蛋疼。现在还在考虑怎么实现一个沙箱机制让不信任的程序安全运行……

    以上都是JS(不是NodeJS)不太可能遇到的问题。

    不过如果你只是想要实现一个带高亮的编辑器,就不用考虑这么多了。赶紧装 Qt,带语法高亮的编辑器可是 Qt 的 Sample project 呢!为什么我强烈推荐 Qt 呢?因为我就真的用 Qt 撸了个 Markdown 编辑器,不仅能高亮,还能编译,当C++大作业交给老师了。老师没听说过 Markdown,最后也给了个不高的分数,都不如那些用 cocos2d 撸保卫萝卜的同学 T_T

    顺带想问问 Unix/C++ 程序员在国内外的薪资水平如何?
    SoloCompany
        24
    SoloCompany  
       2014-10-04 04:36:49 +08:00 via iPad
    @jsq2627 最后一句我差点以为是问学习挖掘机技术哪家强了
    jakwings
        25
    jakwings  
    OP
       2014-10-04 07:54:26 +08:00
    @jsq2627 GUI就是打算用Qt,跨平台啥的好解决。以后还有更多的改造要用到C++,所以是要入一下了。
    薪水不是单看语言来算的吧,而且Unix/C++本来就难精通。总之我是不清楚啦。
    anubiskong
        26
    anubiskong  
       2014-10-04 10:59:53 +08:00
    @sneezry 完全不是一回事
    jarcher
        27
    jarcher  
       2014-10-05 23:09:38 +08:00
    为什么要转 c++,做服务端编程么???如果是的话,路有点长,至少1年。。。
    jakwings
        28
    jakwings  
    OP
       2014-10-06 00:36:00 +08:00
    @jarcher 做带GUI的工具,还有小游戏。服务端实在不敢想……
    Narcissu5
        29
    Narcissu5  
       2014-10-07 11:24:33 +08:00
    带GUI的工具为什么一定要C++呢?MFC万年不更新,从win32自己封装?QT总有种跑偏了的感觉,而且被诺基亚卖掉之后也是前途未卜。
    spacewander
        30
    spacewander  
       2014-10-07 13:43:12 +08:00
    如果你只是想写个GUI程序的话……为什么不看看[node-webkit](https://github.com/rogerwang/node-webkit)?
    这是个很火的项目啊,上过Github Trending的。
    jakwings
        31
    jakwings  
    OP
       2014-10-07 17:19:24 +08:00
    @Narcissu5 Qt还好吧,至少能用,已经给了我继续学习C++的动力了(已经弃坑至少两次)。C++目前还是一种用途很广的语言。
    @spacewander 或许会用到node-webkit吧,web界面要好看的话实在是很耗资源,单单是一个拖动窗框的操作都做不到延迟小。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     970 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 19:24 PVG 03:24 LAX 11:24 JFK 14:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86