1
huruwo 2019-03-25 09:40:50 +08:00
年轻
|
2
ZavierXu 2019-03-25 09:42:15 +08:00
你要不看看 unix 的 api ……
|
3
python35 2019-03-25 09:43:22 +08:00 11
能调 API 已经很爽了 我见过在 linux 层写设备驱动的和连 linux 都没有的情况下开天辟地写驱动的
|
4
hjc4869 2019-03-25 09:43:36 +08:00 3
creat
|
5
tcjj3 2019-03-25 09:45:28 +08:00 via Android
汇编或者二进制编码了解一下
|
6
whoami9894 2019-03-25 09:54:51 +08:00 via Android 3
@tcjj3
你不觉得你在答非所问吗 |
7
Ediacaran 2019-03-25 09:56:32 +08:00 via iPhone
Symbian ?
|
8
Nasei 2019-03-25 10:05:47 +08:00 via Android
命名上可能不太对我口味,HWND LPARAM 看着就丑,其他方面我没觉得 unix 系的好多少…因为系统级编程两边经验都不多,所以都是写的时候现查手册…
|
9
orangeade 2019-03-25 10:09:15 +08:00 via Android
tensorflow ?
|
10
xiusedelang 2019-03-25 10:11:52 +08:00
@Ediacaran Symbian +1
|
11
geelaw 2019-03-25 10:15:33 +08:00 2
楼主的吐槽对象不明确,你想说 NT API 还是 Win32 还是 COM 还是 WinRT 还是 POSIX ?(是的,Windows 曾经支持 POSIX。)
实际上楼主需要摆脱“一切都很简单”的想法,完整表达一个概念有一个内蕴的复杂度。 @Nasei #8 实际上 HWND、LPARAM 都是图形界面编程才用得到的 API,Unix 系根本没有等价的。 |
13
msg7086 2019-03-25 10:25:15 +08:00 via Android
年代有点久远了吧,放在 20 年前我觉得还行?
|
14
xdeng 2019-03-25 10:27:32 +08:00
这是引战?
|
15
Nasei 2019-03-25 10:29:23 +08:00 via Android
@geelaw 仅是指的命名…因为我是从 posix api 那边开始接触的,所以后来接触 win32 api 的时候就先入为主了
|
16
murmur 2019-03-25 10:32:03 +08:00 1
api 丑架不住 ide 牛批
|
17
anyele 2019-03-25 10:35:16 +08:00
在学校的时候, 一开始学 MFC 感觉 API 写的很好啊
|
18
abelmakihara 2019-03-25 10:38:25 +08:00
@anyele #17 当年在学校就被 MFC 还有 ssh 当年的一堆 xml 劝退了 害怕
|
19
Removable 2019-03-25 10:38:50 +08:00
@Ediacaran @xiusedelang 哇,感觉给塞班写过 app 的都是大佬啊
|
20
tomychen 2019-03-25 10:39:02 +08:00
你到底是为了喷 WINAPI 还是为了喷 windows
能不能举个栗子?来证明又烂又丑? |
21
Alexinder 2019-03-25 10:41:42 +08:00
arcgis 不过好像不丑
|
22
anyele 2019-03-25 10:42:57 +08:00 3
@abelmakihara #17 在学校学 Java 我是被 Eclipse 和 XML 劝退的, 因为有 VS 先入为主, 觉得 Eclipse 是什么辣鸡玩意,直到后面接触了 IDEA 才算是入了 Java 的坑。 当时还背过从 WinMain 函数,注册窗口,创建窗口,消息循环函数这一堆流程和代码
|
23
tabris17 2019-03-25 10:44:25 +08:00 1
windows API 是有历史包袱的,毕竟是从 win1.0 时代继承的祖传接口。能维护成这样已经非常不容易了
|
24
zycpp OP @tomychen
_Check_return_ WINOLEAPI CoInitializeSecurity( _In_opt_ PSECURITY_DESCRIPTOR pSecDesc, _In_ LONG cAuthSvc, _In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE* asAuthSvc, _In_opt_ void* pReserved1, _In_ DWORD dwAuthnLevel, _In_ DWORD dwImpLevel, _In_opt_ void* pAuthList, _In_ DWORD dwCapabilities, _In_opt_ void* pReserved3 ); (手动狗头 |
26
ArchVile 2019-03-25 11:09:38 +08:00 1
Windows Api 的文档微软算是做的很不错的了。
|
27
tomychen 2019-03-25 11:15:13 +08:00 1
@zycpp
你这是要对比 stl 还是要对比 objc? 老实说 WINAPI 相比众多 API 而言,已经算是很友好了,至少从命名上已经能估到作用,再加上 MSDN,也算是对 dever 相对友好了吧 君不如埋头看看 Obj-c 的 API 和文档,知足吧。 |
29
GeruzoniAnsasu 2019-03-25 11:45:05 +08:00 7
|
31
tcjj3 2019-03-25 12:04:24 +08:00 via Android
@whoami9894 抱歉失误了,刚开始是想到汇编,汇编其中的中断和 API 的用法相似,没去了解清楚 API 的概念扯到了二进制
|
32
zhuangzhuang1988 2019-03-25 12:12:36 +08:00
@zycpp _In_ 这些是用来做提示和静态分析的,可以自动找 bug
|
33
leonard916 2019-03-25 12:26:54 +08:00
tx 的 api 不是最醜的 api 嗎?
|
34
macha 2019-03-25 12:40:23 +08:00 1
习惯就好,你要想到这个是 C 风格的,而且能做到向前兼容的那么好,已经很不容易了。
|
35
nicevar 2019-03-25 12:43:05 +08:00 1
要是 windows api 算丑的话,那应该没有好看的,windows 表示不是针对谁,都是乐色
|
36
mooncakejs 2019-03-25 12:56:15 +08:00 1
windows api 已经是非常好的 API 了。除了一些无法避免的历史包袱,但是横向对比,没有比它更好的。
|
37
prolic 2019-03-25 13:28:45 +08:00
毕竟是上古时期的产物,设计风格肯定和现在不一样
|
38
bbxiong 2019-03-25 14:11:11 +08:00
windows api 纯 C 的很清晰,一点也不丑
|
39
AX5N 2019-03-25 14:13:16 +08:00
我觉得蛮好看的
|
40
kristpan 2019-03-25 14:18:45 +08:00 1
@GeruzoniAnsasu Unix 本来就倾向于小巧的 api,如果你想把 fork 和 exce 合并在一起,可以用 system()嘛。CreateProcess 名称看起来确实爽,你看看它的参数列表吧:
BOOL CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ); |
41
geelaw 2019-03-25 14:42:30 +08:00
|
42
kristpan 2019-03-25 15:01:28 +08:00
@geelaw 当然,system 和 CreateProcess 不同。我摆出来主要是因为别人提到了 fork+execve,一般把 fork 和 execve 一起用和 system 的效果类似。
|
43
wweir 2019-03-25 15:18:46 +08:00
按照小伙伴的说法,阿里的 API 是最难用的,准确说是丁丁的 API
|
44
ourleven 2019-03-25 15:26:25 +08:00
怎么说呢,代码质量还是可以的。(就是丑而已)
工程师,不要那么在意 ^0^ |
46
IMCKH 2019-03-25 17:17:07 +08:00
eclipse 的 swt
|
47
dosmlp 2019-03-25 18:24:32 +08:00
为了兼容性,毕竟祖传的接口不能随便改
|
48
tomychen 2019-03-25 18:42:01 +08:00
|
49
nickr 2019-03-25 22:27:46 +08:00
win32 时代的 -W, -A 太傻了. 比如 CreateWindowW(), CreateWindowA()
|
50
xieyudi 2019-03-25 23:15:10 +08:00 via Android
@tcjj3 不过汇编 /机器码也是种接口,和 win32api 类似。
只不过这里所说的 win32api 是应用程序 /操作系统之间的接口,汇编 /机器码是软件程序 /RTL 的接口。 |
51
ddup 2019-03-25 23:32:09 +08:00 via Android
你写写 OBJC 就知道什么是饭猿类了
|
52
geelaw 2019-03-26 03:57:56 +08:00 via iPhone
@tomychen #48 认为 ShellExecute 是启动进程是一个常见错误。ShellExecute = 在文件资源管理器里选择文件的上下文菜单操作,很多操作是没有“启动进程”这种说法的。
|
53
ericgui 2019-03-26 07:46:16 +08:00
我同事写的
|
54
weyou 2019-03-26 09:53:25 +08:00 via Android
习惯问题,等你搞过 1 年 winapi 开发,你会发现其他的 api 都是渣渣。
|
55
lizhuoli 2019-03-26 10:27:04 +08:00 via iPhone
匈牙利命名法真实奇葩……好好地 IDE 提示不用,给参数名加类型前缀……
|
56
tomychen 2019-03-26 13:36:01 +08:00
@geelaw 哈,这就较真了...娱乐嘛,很多操作没有“启动进程”的行为,不代表这个功能不能用来启动进程嘛。就像 fork()除了能启动进程以外,还可以让进程变为守护进程一样。
就事论事的态度而言,虽然很多猿都反感 MS,但可能更多人反感的是 MFC 吧,反感 winapi,楼上也有人提到了 API 里的 CreateFileA(W)/CreateFileEx... 更多时候在我看来也是为了让开发者减少去适应一些新的 API,以及在各个大小版本上的兼容问题。 反观某些平台,完全无视开发者,API 说弃用就弃用,是的,直接从底层摘掉,也就是上个版本还用得好好的程序,更新一下主系统,程序就启动不起来了。当然,这问题跟朋友讨论过,有说好,也有说不好。至于好还是不好呢,其实我也不知道。可能对系统厂商而言,减少了很多开销,但对开发者和用户而言其实是不太友好的。 至于 win(32)API 再加上 MS 那套针对自己无比友好的 MSDN 而言,如果说它还不够好,我真不知道谁家的算好了. |