请教高手:windows 10 下c++编程搭建

m
microsat
楼主 (北美华人网)
打算在windows 10 下搭建c++ 编程环境。我使用c++的主要目的是金融算法研究和银行保险分析。所以不涉及windows界面和linux的界面。
请问是visual studio code好,还是用visual studio 2019好呢?
如果使用visual studio code, 是使用g++作为编译器还是使用microsoft vc作为编译器呢?
如果使用g++编译器,是使用MinGW-w64好,还是使用MinGW好呢?
多谢!
t
tiramixu
可以直接用 wsl2了
m
microsat
可以直接用 wsl2了

tiramixu 发表于 2021-09-09 13:02

请问这是什么好东西? 与我列出的比,有什么优势?
T
TOR123
哪个贵哪个好,MS又不是傻的,说了跟没说一样
金银岛
好像没有visual studio 2020
m
microsat
好像没有visual studio 2020
金银岛 发表于 2021-09-09 13:42

不是重点。改成 2019了。
i
isomer
visual studio 2019就很好用了。个人用,可以用comminity license which is free.
s
sayunyan
我在win10下做C编程,用的是wsl2 + vs code
f
fn
VS 2019 is better but VS code should work.
s
snow_mm
一个没有界面的项目为什么要用C++?用Python之类的更方便,还是跨平台的,当然标准C++也可以跨平台但对比新兴的语言需要耗不少精力在无用的事上
n
nicecool
vs code is enough.
g
gokgs
我正在教自己孩子 C++, 不过是在 mac 上环境。 看了半天, 其实 C++ 开始最容易。基本东西差不多了, 再教一些Java 和 python.
s
snow_mm
我正在教自己孩子 C++, 不过是在 mac 上环境。 看了半天, 其实 C++ 开始最容易。基本东西差不多了, 再教一些Java 和 python.
gokgs 发表于 2021-09-09 15:30

C++是最麻烦的,说容易的是根本没有接触内存管理
g
gokgs
C++是最麻烦的,说容易的是根本没有接触内存管理
snow_mm 发表于 2021-09-09 15:32

sigh, 俺搞 C++ 好多年了好不好。 you do not have to use complicated stuff. 连 pointer 都不用 估计应该也可以。 当然, 不懂 pointer 的马公肯定不少好马公。
java 一个 hello world 就 touch 很多东西。
s
snow_mm
sigh, 俺搞 C++ 好多年了好不好。 you do not have to use complicated stuff. 连 pointer 都不用 估计应该也可以。 当然, 不懂 pointer 的马公肯定不少好马公。
java 一个 hello world 就 touch 很多东西。
gokgs 发表于 2021-09-09 15:37

不知道你搞了几年C++,我在面试人的时候经常有人说精通C++,给他们一个3行的代码输出结果90%都是错的。C++是唯一一个接近低级语言的,可以直接操作内存,可以直接系统调用。说C++简单我是没法理解,新兴的语言多是面向对象的经过多重包装已经不需要去理解底层的东西了。 本人熟悉所有的编程语言,最早用汇编生成16进制数打卡,到C,C++。Java从1.0刚出来就在项目中应用。语言就是个工具无所谓好坏,关健是架构设计,适合项目的就是好的。到了一定的程度什么语言都是一样的,看几个小时就可以上手。单纯从语法上来讲比较喜欢Swift,可惜只能在Mac下用。
S
Spark001
回复 15楼snow_mm的帖子
强烈同意。。现在小年轻根本不懂C/C++
t
ted.hanks
回复 15楼snow_mm的帖子
面试会碰到很多回字的写法,和编译器有关,太无聊了。
最近10年的C++和以前的大不一样了。meta programming,还有type inference, lambda 还是有很多东西的。
现在的计算机体系, 如果不是嵌入式系统,直接操作内存是不能的, OS层面有virtual memory 的保护的,直接读写肯定SEGV。
t
ted.hanks
关于lz 的问题,取决于你开发的程序需要的dependency 是什么,是否有跨平台的需求。
如果是的话, 在linux上, aka WSL2, 比windows 方便多了。
s
snow_mm
回复 15楼snow_mm的帖子
面试会碰到很多回字的写法,和编译器有关,太无聊了。
最近10年的C++和以前的大不一样了。meta programming,还有type inference, lambda 还是有很多东西的。
现在的计算机体系, 如果不是嵌入式系统,直接操作内存是不能的, OS层面有virtual memory 的保护的,直接读写肯定SEGV。

ted.hanks 发表于 2021-09-09 17:27

标准C++与编译器有什么关系?不同的编译器只是在优化代码效率上不同。Virtual memory只是分配给你的程序的内存,不代表你不需要内存的知识,相反需要的相关系知识更多了特别是进程间共享、同步。而且OS有系统调用可以访问其它进程的内存。 如无必要使用C++编程只会给自己找麻烦,就算用个数组存储空间也是事先定义好的,想要扩展还要写代码支持。当然有些标准类库可以使用,对生手来说也不容易,没有内存知识、不了解系统调用出了错也不好查
s
snow_mm
真的非要用C++推荐用C++ Builder虽然Borland公司不在了,但那群大神级的人物还有传承,能把一个编译器做到这么好的公司不多见,代码优化后的效率比VS高一个数量级
鸿
鸿粉佳人
回复 15楼snow_mm的帖子
面试会碰到很多回字的写法,和编译器有关,太无聊了。
最近10年的C++和以前的大不一样了。meta programming,还有type inference, lambda 还是有很多东西的。
现在的计算机体系, 如果不是嵌入式系统,直接操作内存是不能的, OS层面有virtual memory 的保护的,直接读写肯定SEGV。

ted.hanks 发表于 2021-09-09 17:27

你写一个malloc就是在直接操作内存啊。
s
snow_mm
你写一个malloc就是在直接操作内存啊。
鸿粉佳人 发表于 2021-09-09 18:14

他说的是物理内存,大家一般都说虚拟内存。真正进程内互访的比较少。不能访问物理内存只是避免了因一个程序错误导致系统崩溃并不能防止自己的程序内互相访问内存出错。
鸿
鸿粉佳人
他说的是物理内存,大家一般都说虚拟内存
snow_mm 发表于 2021-09-09 18:16

那随便写个 *((volatile uint32_t *)0xfffe0004) = 1; 也是在操作啊。 比如股票软件里面需要直接读取网卡上的数据。
s
snow_mm
那随便写个 *((volatile uint32_t *)0xfffe0004) = 1; 也是在操作啊。 比如股票软件里面需要直接读取网卡上的数据。
鸿粉佳人 发表于 2021-09-09 18:18

不是通过系统调用访问的都是经过OS映射后的虚拟地址
t
ted.hanks
真的非要用C++推荐用C++ Builder虽然Borland公司不在了,但那群大神级的人物还有传承,能把一个编译器做到这么好的公司不多见,代码优化后的效率比VS高一个数量级
snow_mm 发表于 2021-09-09 18:07

//sign, C++ 最近几年的发展全被你忽视了, 尤其是llvm 的出现,改变了编译器的landsacpe。
t
ted.hanks
标准C++与编译器有什么关系?不同的编译器只是在优化代码效率上不同。Virtual memory只是分配给你的程序的内存,不代表你不需要内存的知识,相反需要的相关系知识更多了特别是进程间共享、同步。而且OS有系统调用可以访问其它进程的内存。 如无必要使用C++编程只会给自己找麻烦,就算用个数组存储空间也是事先定义好的,想要扩展还要写代码支持。当然有些标准类库可以使用,对生手来说也不容易,没有内存知识、不了解系统调用出了错也不好查
snow_mm 发表于 2021-09-09 17:47

编译器不仅仅是优化的问题, 还有ABI, 很多底层sizeof 都和编译器的实现相关, 因为标准没有定义。
提出virtual memory, 只是针对c++ 可以直接写内存的说法不完全正确。
如果把c++当一个更好的C 用 也没什么不对,但是C++ 应该是建议更多的使用容器,smart pointer, 而非C里的数组和pointer。
s
snow_mm
编译器不仅仅是优化的问题, 还有ABI, 很多底层sizeof 都和编译器的实现相关, 因为标准没有定义。
提出virtual memory, 只是针对c++ 可以直接写内存的说法不完全正确。
如果把c++当一个更好的C 用 也没什么不对,但是C++ 应该是建议更多的使用容器,smart pointer, 而非C里的数组和pointer。
ted.hanks 发表于 2021-09-09 19:36

你那些概念只会让新手再糊涂,sizeof之类的谁说的没标准?是属于宏编译的一部分,在任何编译器都是一样的,只有在没有定义宏的时候在不同的OS下才会有区别。对于内存你可真能扣字眼,这是常识好不好,你平时说话都是说这条语句是访问虚拟内存的吗?直接写物理内存与操作虚拟内存对编程人员来说有多大区别吗?C++绝大多数错误都是对内存不了解引起的,不只是Point,每个变量都要占用内存看起来逻辑正确的程序很有可能因为内存管理不善而出错。特别是要7*24运行的程序要求更高,而其它高级语言这一点根本不用考虑。 C++太灵活了,可以用面向对象的方式用也可以当做C来用,当然C++严格来说不是完全面向对象的,新手不好控制。现代提出了Morden C++的概念有了一些改进可并没有禁止使用旧的方式,除非你非常了解否则没必要给自己找麻烦。 我自身经历原来编程C++使用频率相当高,因为效率高,占用资源少有时真的是几个字节几个字节的省内存,现在基本都用不到了,特别是现在都是基于WEB的了,就算后台都不一定用C++了。 不服气的就简单创建个线程,去new 一个数组再删除,看看有几个人能做到跑几个小时不出错,逻辑看起来简单真用起来是另一回事。 就像我说的语言无好坏,适合自己的项目就是好的,一个项目应当把主要精力放在逻辑设计上,没有必要给自己找麻烦。以后的编程语言也会越来越接近人类的语言,这是趋势
w
wdong
打算在windows 10 下搭建c++ 编程环境。我使用c++的主要目的是金融算法研究和银行保险分析。所以不涉及windows界面和linux的界面。
请问是visual studio code好,还是用visual studio 2019好呢?
如果使用visual studio code, 是使用g++作为编译器还是使用microsoft vc作为编译器呢?
如果使用g++编译器,是使用MinGW-w64好,还是使用MinGW好呢?
多谢!

microsat 发表于 2021-09-09 12:59

如果不想被平台锁死,可以用windows sdk。那个只是编译器和库,不带乱七八糟的开发环境。可以用任何编辑器写程序。编译器的话,windows下肯定优先选微软的。如果嫌nmake语法不一样,可以用cmake.
g
gokgs
C++ 有可能重新辉煌阿。 自动驾驶什么的来个 gabage collection, 性能马上完蛋。 C++ 功能复杂, 但平时写程序大部分都是 basic 功能阿, 没那么多 fancy.
t
ttyp0
Eclipse, 可以支持java, C,C++,python ...
什么时候管理内存变的那么难了。无非仔细点,麻烦点。 Constructors , Destructors 写 完全。 什么乱七八糟的写法从来记不住, 搞不清楚输出,直接run一下,debug设个断点不就知道了? 从来不浪费时间 在这种上面。
不是越底层就越显得高级, 以前还觉得打memory patch很cool, 现在想想这东西真落后。
r
raindrop2020
mark
墨西哥辣椒

欧洲这里都在用 Eclipse 啊

m
microsat
不知道你搞了几年C++,我在面试人的时候经常有人说精通C++,给他们一个3行的代码输出结果90%都是错的。C++是唯一一个接近低级语言的,可以直接操作内存,可以直接系统调用。说C++简单我是没法理解,新兴的语言多是面向对象的经过多重包装已经不需要去理解底层的东西了。 本人熟悉所有的编程语言,最早用汇编生成16进制数打卡,到C,C++。Java从1.0刚出来就在项目中应用。语言就是个工具无所谓好坏,关健是架构设计,适合项目的就是好的。到了一定的程度什么语言都是一样的,看几个小时就可以上手。单纯从语法上来讲比较喜欢Swift,可惜只能在Mac下用。
snow_mm 发表于 2021-09-09 15:51

高手膜拜中。
我问高手个快问题。 怎么能用C++写出一个能实现matlab那样功能的软件? 需要哪些技术?
m
microsat
一个没有界面的项目为什么要用C++?用Python之类的更方便,还是跨平台的,当然标准C++也可以跨平台但对比新兴的语言需要耗不少精力在无用的事上
snow_mm 发表于 2021-09-09 15:19

虽然没有界面。但是设计到大数据和大内存调用。 比如金融股票30年的数据,一次性load进内存。 python没有这个能力。
m
microsat
我正在教自己孩子 C++, 不过是在 mac 上环境。 看了半天, 其实 C++ 开始最容易。基本东西差不多了, 再教一些Java 和 python.
gokgs 发表于 2021-09-09 15:30

我怎么觉得c最容易呢。c++和c比较起来,什么意见?
m
microsat
关于lz 的问题,取决于你开发的程序需要的dependency 是什么,是否有跨平台的需求。
如果是的话, 在linux上, aka WSL2, 比windows 方便多了。
ted.hanks 发表于 2021-09-09 17:33

我不打算跨平台。只希望,debug方便,ide轻便就可以了。
m
microsat
真的非要用C++推荐用C++ Builder虽然Borland公司不在了,但那群大神级的人物还有传承,能把一个编译器做到这么好的公司不多见,代码优化后的效率比VS高一个数量级
snow_mm 发表于 2021-09-09 18:07

我就是从borland C学的。请问现在borland C变成什么了?
m
microsat
真的非要用C++推荐用C++ Builder虽然Borland公司不在了,但那群大神级的人物还有传承,能把一个编译器做到这么好的公司不多见,代码优化后的效率比VS高一个数量级
snow_mm 发表于 2021-09-09 18:07

当年用borland C,只有两张A盘。 286机器连个硬盘都没有。 想起来真不容易。
m
microsat

欧洲这里都在用 Eclipse 啊


墨西哥辣椒 发表于 2021-09-09 21:10

我不喜欢eclipse。请问eclipse比起visual studio code有啥优势?
g
gvcc
我怎么觉得c最容易呢。c++和c比较起来,什么意见?
microsat 发表于 2021-09-10 14:36

C没有OOP特性,开发大型项目很难维护。 现在流行的很多游戏引擎都用C++写。 C++大而全,但功能复杂,交叉又多,很多码农不喜欢C++

j
jarvi
虽然没有界面。但是设计到大数据和大内存调用。 比如金融股票30年的数据,一次性load进内存。 python没有这个能力。
microsat 发表于 2021-09-10 14:35

一次性load进内存真的好吗
s
seven11
不知道你搞了几年C++,我在面试人的时候经常有人说精通C++,给他们一个3行的代码输出结果90%都是错的。C++是唯一一个接近低级语言的,可以直接操作内存,可以直接系统调用。说C++简单我是没法理解,新兴的语言多是面向对象的经过多重包装已经不需要去理解底层的东西了。 本人熟悉所有的编程语言,最早用汇编生成16进制数打卡,到C,C++。Java从1.0刚出来就在项目中应用。语言就是个工具无所谓好坏,关健是架构设计,适合项目的就是好的。到了一定的程度什么语言都是一样的,看几个小时就可以上手。单纯从语法上来讲比较喜欢Swift,可惜只能在Mac下用。
snow_mm 发表于 2021-09-09 15:51

一股浓浓的老帮菜味道扑面而来 都2021年了会不会内存管理有鸟用?现在讲究的是糙快猛
s
seven11
不知道你搞了几年C++,我在面试人的时候经常有人说精通C++,给他们一个3行的代码输出结果90%都是错的。C++是唯一一个接近低级语言的,可以直接操作内存,可以直接系统调用。说C++简单我是没法理解,新兴的语言多是面向对象的经过多重包装已经不需要去理解底层的东西了。 本人熟悉所有的编程语言,最早用汇编生成16进制数打卡,到C,C++。Java从1.0刚出来就在项目中应用。语言就是个工具无所谓好坏,关健是架构设计,适合项目的就是好的。到了一定的程度什么语言都是一样的,看几个小时就可以上手。单纯从语法上来讲比较喜欢Swift,可惜只能在Mac下用。
snow_mm 发表于 2021-09-09 15:51

“本人熟悉所有的编程语言”牛皮别吹破了。不谷歌你给我讲讲常用的Javascript的module formats有几个,区别是什么?
g
gokgs
“本人熟悉所有的编程语言”牛皮别吹破了。不谷歌你给我讲讲常用的Javascript的module formats有几个,区别是什么?
seven11 发表于 2021-09-10 15:05

回字几种写法? 很无聊, 现在马公基本默认各种语言任意切换, 大概 除了 C++。 C++ 好多 fancy 功能大部分人一辈子大概也用不着。