1
cxe2v 2013-08-09 11:54:59 +08:00 1
桌面应用有JAVA的么?C++比较多吧,不过现在都是混合开发了,不会用同一种语言
|
2
rteta OP 公司有个小项目 IM,我想跟着学开发,是不是应该从c/c++ 开始学?
还有 要学算法不? 谢谢咯 |
3
wenLiangcan 2013-08-09 12:06:02 +08:00 1
Windows 下应该 .NET 比较方便吧,.NET 可以用 C++
|
4
funcman 2013-08-09 12:07:08 +08:00 1
一般这种问题都卡住,说明你买的书不好,多买几本书对照着看。
桌面应用的话,Windows上,如果长期跟进维护的,一般用.Net;如果是面向大众的,一般用C++。 Java也是行业用得比较多,国内用得不多,国内主要用Java做Web应用。 |
5
rteta OP 用的是 宋剑杉 那本 Linux c 一站式入门 怎么总感觉有些地方讲的太过于简单,几句话就完了,
另外 狂人C 这本书如何? |
7
jesonyang 2013-08-09 12:46:14 +08:00
算法开源的有很多,专注于C++和跨平台的移植!
|
12
rteta OP 能不能直接推荐本 win平台 c/c++开发应用程序的书来?
|
13
PotatoBrother 2013-08-09 14:05:09 +08:00 via iPhone
Win平台的话桌面开发推荐C#
|
14
Ricepig 2013-08-09 14:08:34 +08:00
学学winform吧,豌豆荚开始也是基于winform
等有感觉了,转C也容易吧 |
15
chchwy 2013-08-09 14:38:25 +08:00
Java現在大多應用在Web上啦,幾乎沒人用它來寫桌面應用。
桌面應用現在主流是C#/.NET,比C++好寫一百倍啊。 需要跨平台的話現在當紅的方案是C++/Qt。 |
16
leavic 2013-08-09 14:49:39 +08:00
C#啦,上手超快
|
17
hanf 2013-08-09 17:57:09 +08:00
windows平台桌面应用,c#是不二之选
|
18
itfanr 2013-08-09 19:39:43 +08:00 2
C为硬件而生
C++为算法而生 JAVA为WEB而生 现在android的出现它也为移动端作贡献了 C#/.NET为快速开发windows平台软件而生,包括界面 php为web而生,且只能靠web存活。。。其他开发都是小众 python为编脚本而生,web也可以 go为并行而生 |
19
rteta OP 感谢大家的热心回答……不知道为何*:,我主观上非常不喜欢c sharp,
游戏公司写网游客户端用什么语言?好像是 cpp吧 |
20
rteta OP 是cpp吗,是的话我就学c 和cpp了
|
21
cdffh 2013-08-09 22:07:07 +08:00 1
推荐c++和qt。很好用
|
23
jybox 2013-08-09 22:53:16 +08:00 1
|
24
RisingV 2013-08-09 22:58:40 +08:00
@itfanr 嗯,都同意。但除了C++ ,它是“为了让事情变得复杂,提高程序员薪水而生的”,这是Bjarne Stroustrup自己说的,哈哈
|
25
Geeker 2013-08-09 22:59:07 +08:00
可以用Qt,但是还是推荐C#吧,上手快。
|
26
rteta OP 越看越迷糊
|
27
funcman 2013-08-09 23:45:02 +08:00 1
@rteta 写桌面不太需要算法。排序算法学一学即可,图的算法都很少用到。做这个几乎不需要你设计算法,用已有的即可,会编程实现就行。
|
29
funcman 2013-08-10 01:09:26 +08:00 2
C++还是.Net,要看做什么。
.Net做项目,考虑到XP用户没有装.Net Framework,需要把.Net Framework打包进安装程序。安装包会比较大,并且安装速度稍慢。这样,用户体验就要差一些。所以很多流行的免费软件不用.Net。 .Net经常被说成COM的升级版。用COM的软件,发布起来就有点麻烦了。需要做一下DLL注册。而国内用户经常喜欢可以“绿化”的软件,直接拷来就用,连安装都不要了。 C++做的桌面应用,就没这些麻烦。把所有依赖的DLL都放到EXE目录下,就能跑,不需要装重量级的库。(如果用到COM接口的库,还是需要注册一下) 开发游戏,主要用C/C++,和诸如Lua、Python这样的脚本语言。但是游戏开发需要写很多编辑器供策划和美术使用,编辑器使用的技术也就是桌面应用开发的技术。目前这块,.Net和Qt是最流行的;MFC也有使用,但它实在不适合快速开发,用得极少;另外也有使用C++Builder的,只不过C++Builder被宝兰卖给小厂了,没多少影响力,但是用它开发编辑器还是蛮舒服的。 .Net在编辑器开发上的主要问题是,.Net有自己的内存模型,和C++的模型不太一样,调试时容易被坑。游戏引擎肯定是本地代码的,编辑器肯定需要调用引擎代码。实现起来倒不难,不需要把引擎包成.Net的DLL,直接用.Net的C++/CLI来写 游戏引擎肯定是本地代码的,编辑器要调用游戏引擎,游戏引擎一般以dll的形式为引擎提供功能。如果用C#来做,需要把引擎的dll用C++/CLI包装成托管dll。但其实直接用C++/CLI来写编辑器就挺好的,没必要用C#。参考资料看C#的就可以了,反正都是调用.Net Framework的库,语法上有些不同。不过托管代码和本地代码的内存模型不同,调试起来会遇到坑。 |
30
funcman 2013-08-10 01:36:20 +08:00 1
C#相对于C/C++的优势在于,C#有垃圾回收。
垃圾回收的好处,不在于可以使经常忘记free内存的菜鸟也能写代码。 一个复杂的系统,对象会在很多个作用域中被引用。作用域与作用域之间,如果还要交换对象的引起情况,那系统模块间的耦合就太大了。简单的系统应该是,我在这个作用域中引用了一个对象,不需要关心这个对象是否在其它作用域被引用。既然不关心,那么也没办法靠判断来决定是否释放对象。对象什么时候释放,应该由一个底层的机制来解决。如果没有这种机制,再小心的老手,也写不出没有内存资源泄露的程序。 C/C++编写系统,一般靠引用计数来管理对象何时才能消亡。如果不用引用计数,那只能统一生产对象再统一释放,内存够倒还好。C/C++其实也有一些垃圾回收(gc)工具库,不过应用得不广泛。gc能回收的内存,必须是gc提供的内存分配功能获取的内存。但是C/C++有自己的malloc/free,可能会出现free掉gc管理的内存的情况。C++标准其实想加入gc,但是手动管理的存在,一直不太好加。 大多数时候,引用计数够用了,gc毕竟太复杂。底层的东西,太复杂不大好。微软以前长久地被dll地狱问题困扰,到.Net Framework的推出时才得以解决。而Linux、OSX这些系统,只不过简单的约定了一下版本号,就解决了这个问题。微软在.Net Framework上花了巨大的精力,结果现在还是有很多人不用它。 |
31
iveney 2013-08-10 03:56:35 +08:00
@funcman C++ 已经在提倡使用 shared_ptr, unique_ptr 来管理对象,而不是手工管理指针了。
好奇现在是不是 Windows app 都全用 .NET/C# 了。很久之前自学 Windows App Dev 时还是用的 Win32 API 与 MFC/C++。 |
32
rteta OP 好吧 我知道了 谢谢大家热心回答 !
|
33
funcman 2013-08-10 10:13:01 +08:00
@iveney shared_ptr毕竟是C++11才加入的,如果用老一点的编译器,你还得用boost。shared_ptr出现之前,引用计数就大量使用了。
WinForms的开发,比Win32/MFC要容易多了,易用程度跟VB差不多。 |
34
miller 2013-08-10 10:55:43 +08:00 3
毕业以后在一家互联网公司做了两年的windows桌面客户端软件开发。
我们这边客户端,大都使用C++开发。 就我们项目组来说,用了boost的很多功能,比如boost.smart_ptr管理内存,boost.test单元测试,boost.thread写多线程等等。界面库也是自己开发的。 |
35
stackpop 2013-08-10 12:18:19 +08:00 1
如果纯粹是桌面开发的话,windows下多数还是C++、C#开发,MFC性能比较好, winform和wpf之类的让界面开发变得非常简单。当然,你也可以学习QT。
其实业务逻辑才是难点,界面是很简单的。算法这种东西最好还是要有基础的知识储备再看,各种数据结构要理解。 理解DFS要先理解递归,树(解答树)和图这种基础的数据结构。BFS类似。 另外这两种算法有固定的模式,难点通常在于如何构建解答树、状态的保存、判重等。 |