新手写 windows 窗口程序 应该怎么去学习

2015-11-17 02:39:28 +08:00
 m939594960

会 php javascript
都是脚本类的编程

最近想写一些 windows 窗口程序 所以想学 C#
感觉与原来学得脚本类的语言还是有点差距的
但是不知道怎么去学 有没有好点的视频教程 /书
现在市面上的书 /视频很多 但是找不到很合适我去学习的 都是 IF else while do 什么的 很是蛋疼 这些基础的东西我还是能很快的理解的。

每学一门语言内心都很挣扎。。。 比如
1.是不是 C++ qt 效率更高更好呢。等以后我在学.net (道理我都懂 但是就想找个更合适的)
2.是 WPF 好呢还是 winform 好呢(虽然我也不知道有啥区别)
3.这个语言有 XXX 缺点 XXX 缺点 好烦啊 到底学不学啊。。。。
4.找到一些相关的书和教程 一看是 2013 年出的就会觉得很不爽 不想读 怕技术更新了,学得思路不对了!

6914 次点击
所在节点    .NET
37 条回复
chinvo
2015-11-17 02:50:51 +08:00
我是从 VB/ASP 转 PHP 再到 C++的,说说我个人的感受吧。

如果已经有了扎实的 PHP 或 JS 基础,那么当你学习其他语言的时候,可以针对其他语言的特性学习而跳过重复的内容。不过如果你尝试阅读一门语言的深入级别的书籍时发现存在不易理解甚至无法理解的东西,我建议还是回头重新学习入门级的资料。不要因为 if else while do for 等基本语法而感到无聊,因为你可能在跳过这些内容时遗漏非常重要的语法基础,比如 PHP 是弱类型的,然而 C# 是强类型的。
chinvo
2015-11-17 02:54:46 +08:00
至于 C++ + QT ,在 Windows 窗口程序方面,明显不如微软自家原生的 WPF winform 和 MFC 贴近系统生态;
没有哪一门语言是没有缺点的,因为任何一门语言都有自己的拥护者和反对者;
如果只是入门的话,稍微旧一点的资料也没关系,因为一门成熟的语言一般不会在这么短的时间内对基础内容进行不向后兼容的修订。
chinvo
2015-11-17 02:55:26 +08:00
只是个人的拙劣见解,若有大神路过,请轻喷 ><
msg7086
2015-11-17 02:58:29 +08:00
第一步 get things done 。
接下来,优化他。
一直优化到有一天你觉得不重写他就不行了的时候,说明你已经很牛逼了。
m939594960
2015-11-17 03:01:16 +08:00
@hinvo 恩 认真读了一下 收获很大 谢谢 !
loading
2015-11-17 07:00:37 +08:00
如果不是要深入,是临时任务,可以看下 aauto
Sentive
2015-11-17 07:51:53 +08:00
学语言要不了多久的,最重要的是学习各种框架,看帮助。然后做几个项目之后,就可以看看设计模式了。
Athrob
2015-11-17 08:24:52 +08:00
C++的话直接 Qt5 吧
优点: 组件非常丰富, 大部分组件都支持常用 css 和 html 标签, 信号槽机制用起来也很方便, 性能相对较好.
缺点: 需要携带 Qt 的 dll, 有点庞大. 第一次启动程序会有点慢(因为要加载很多 Qt 的 dll)

C#的话 WinForm 已经很完善了
优点: 组件也很丰富, 各种组件添加事件响应都可以直接在设计器完成(Button 的话直接双击就会自动生成 OnClick 代码)
还有 C#里各种 delegate, lambda, dynamic, linq 用起来超级方便
缺点: 需要.net framework, 且软件对外发布的话要自己加密或混淆, 否则很简单就能把 C#的 exe 或 dll 还原成代码.

以上是个人使用时的感受, 仅供参考
Athrob
2015-11-17 08:26:16 +08:00
还有 Qt 和 C#的文档都很完善, Qt 的代码风格也很优美.
hqs123
2015-11-17 08:31:18 +08:00
直接 Qt 把,直接写 windows 窗口已经不多了。
wellsc
2015-11-17 08:34:09 +08:00
Ironpython
vitovan
2015-11-17 08:41:21 +08:00
@msg7086

get things done +1

get things done / get things done / get things done / ......

然后就好了,业务驱动是最好的。

个人建议不要去读什么大厚书,学会 Google 比什么都重要。
wizardforcel
2015-11-17 08:50:51 +08:00
1. 没接触过的话 绝对是 c#开发效率更高

2. wpf 是用来做特效的 不要求特别炫酷的话还是 winform 比较好 wpf 在小内存机子上比较卡

3. c#的坑屈指可数 目前我认为唯一的坑就是轮子少 以及平台的问题。

4. 这个要看版本 比如说你用的特性都是 c#4 里面的 c#5 新增的特性用的很少 而他是 2010 年推出的 那么看 2010 年之后的书就没问题
weizhiyao008
2015-11-17 09:06:37 +08:00
2013 年以后 C#比较大的更新就 async/await 异步同步,这特性其实用的挺少的,如果不是特别感兴趣的话, 2013 的资料完全够用
weizhiyao008
2015-11-17 09:10:07 +08:00
不对,好像说错了, 2013 年.NET 4.5 已经发布了, async/await 已经有了
qinxi
2015-11-17 09:10:50 +08:00
java 是世界上最好的语言:) 哈哈哈哈哈
sun2920989
2015-11-17 09:50:40 +08:00
uwp 考虑么 最近在学
min
2015-11-17 10:02:08 +08:00
wpf 或者 uwp ,语言 C#
g00001
2015-11-17 11:03:16 +08:00
如果不是想专业从事桌面软件行业,这些东西都太重了,学习成本高,开发工期长...没有那么美好的。
桌面软件跨平台意义不是很大,非 win 的系统的市场占有率基本可以忽略,跨平台是有代价的。一是体积大,二个是需要考虑的环境因素太多不可避免的搞的更复杂,三是不能发挥专用平台的优势。

有 PHP,JS 的基础,想快速搞些桌面软件,最方便的就是 aardio ,分分钟就能撸出个象样的程序来,分分钟就能找到感觉。即使是原来就会 C#,C++这些会点 aardio 也是不错的, aardio.org 的站长就是十几年的 C#程序员,人家用 aardio 写了个 ERP 企业管理系统,服务端客户端全部用 aardio 开发。

而且 aardio 里调用什么其他的都很方便,几句代码嵌入个 webkit ,几句代码嵌入个 webbrowser ,直接调用 C#,Java,C,Js,PHP...... 虽然拥有这么多的功能,但是 aardio 的开发环境却只有 6.5MB ,简单、小巧、粗暴!

随便几句代码找下感觉

import win.flashBox
var flash = win.flashBox(text="aardio Form";right=599;bottom=399)
flash.movie = "http://update.aau.cn/aardio/samples/transparent.swf";

flash.show()
win.loopMessage();

没错,五句代码就可以生成一个简单的、但完整的窗口程序、一个桌面透明的 FLASH 动画窗口。
msg7086
2015-11-17 12:17:41 +08:00
@g00001 其实光最后那句消息循环,拿出来就可以讲好久了。
===
我学 C#的时候就是自己随便挑了个项目写了个开源软件,维护了 2 年,期间重构了一次,重新设计了多次,后来因为发展方向变了所以就弃坑了,把源码都交给了一个医务工作者朋友,现在由他来维护,到现在已经 8 年多了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/236650

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX