免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: cokeboL
打印 上一主题 下一主题

[其他] obj-c真心很丑,比c++还丑 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2012-08-30 09:32 |只看该作者
函数命名规则和调用方法明顯比其它語言好, 一看就知道函数是幹什麼和需要什麼參數.
Mac 下的 objective-c 不是一直都有 garbage collection? iOS 5.0 開始也有 garbage collection.

qinggeng 发表于 2012-08-29 16:06
最恶心的是这玩意的函数命名规则和调用方法。啰嗦得不得了。
内存管理不错?你在开玩笑吧?obj-c的这种管理 ...

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
32 [报告]
发表于 2012-08-30 11:34 |只看该作者
本帖最后由 cokeboL 于 2012-08-30 11:36 编辑

回复 31# eookoo


    我觉得qinggeng 想表达的是obj-c的书写格式恶心,什么‘+’、‘-’、‘:’、类前面‘@’之类的,纯C的格式简洁明了,挺好的,obj-c搞得好复杂,Labels
   
    倒是看上去有点用,也看个人喜好吧。

论坛徽章:
0
33 [报告]
发表于 2012-08-30 15:01 |只看该作者
这个都算丑的话,那perl算什么?

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
34 [报告]
发表于 2012-08-30 15:13 |只看该作者
回复 33# btdm123


    厄,没用过,要不您吐个槽~

论坛徽章:
0
35 [报告]
发表于 2012-08-30 15:48 |只看该作者
回复 34# cokeboL
  1. #!/usr/bin/perl -wl

  2. use strict;
  3. use constant {k_maxLength => 100};

  4. sub loadProcList {
  5.     my ($procListRef) = @_;
  6.     my (@F, $pid, $ppid, $output);
  7.     for (qx(ps -eo pid,ppid,etime,command)) {
  8.         chomp;
  9.         @F = split;
  10.         ($pid, $ppid) = @F[0, 1];
  11.         $procListRef->{$pid}->{"pid"}  = $pid;
  12.         $procListRef->{$pid}->{"ppid"} = $ppid;
  13.         $output = join " ", (@F[0, 2 .. $#F]);
  14.         $procListRef->{$pid}->{"cmd"} = substr($output, 0, &k_maxLengt
  15. +h);
  16.         push @{$procListRef->{$ppid}->{"cpids"}}, $pid;
  17.     }
  18. }

  19. sub printer {
  20.     my ($procListRef, $pid, $flow, $indent) = @_;
  21.     my ($ppid, $cpid);

  22.     # initialize if first call; to be set when recursive call
  23.     $pid    = 0 if !defined($pid);
  24.     $flow   = 0 if !defined($flow);
  25.     $indent = 0 if !defined($indent);
  26.     if (defined $procListRef->{$pid}) {
  27.         if (($flow < 1) && (defined($procListRef->{$pid}->{"ppid"})))
  28. +{
  29.             $ppid = $procListRef->{$pid}->{"ppid"};
  30.             # will not be set for top level process (pid = 0)
  31.             # could have been easier to check if pid=0, but avoiding h
  32. +ardcoding
  33.             if (exists($procListRef->{$ppid}->{"pid"})) {
  34.                 $indent += printer($procListRef, $ppid, -1, $indent);
  35.             }
  36.         }
  37.         print "  " x $indent++ . $procListRef->{$pid}->{"cmd"} if (exi
  38. +sts($procListRef->{$pid}->{"cmd"}));
  39.         # flow > -1 while printing original pid and looking for childr
  40. +en
  41.         if (($flow > -1) && defined($procListRef->{$pid}->{"cpids"}))
  42. +{
  43.             for $cpid (@{$procListRef->{$pid}->{"cpids"}}) {
  44.                 printer($procListRef, $cpid, 1, $indent);
  45.             }
  46.         }
  47.         return $indent;
  48.     }
  49. }

  50. sub main {
  51.     my %processHash;
  52.     loadProcList(\%processHash);
  53.     printer(\%processHash, $_) foreach (@_?@_:1);
  54. }

  55. main(@ARGV);
复制代码

论坛徽章:
0
36 [报告]
发表于 2012-08-30 22:39 |只看该作者
cokeboL 发表于 2012-08-29 22:46
回复 28# qinggeng

也就这样。新入行的话是比windows平台高,但也高得有限。到了一定程度上还是基本功:算法、数据结构、架构设计等等这些无论在哪个平台、哪个语言都吃得开的东西。
我学objc的语法也就花了一天而已,然后xcode和iphone花了一个多星期就上路了。

论坛徽章:
0
37 [报告]
发表于 2012-08-30 22:43 |只看该作者
btdm123 发表于 2012-08-30 15:01
这个都算丑的话,那perl算什么?

不是有吐槽说,perl是唯一一种AES加密前和加密后都一样的语言么?

论坛徽章:
0
38 [报告]
发表于 2012-08-30 22:48 |只看该作者
本帖最后由 qinggeng 于 2012-08-30 22:48 编辑
eookoo 发表于 2012-08-30 09:32
函数命名规则和调用方法明顯比其它語言好, 一看就知道函数是幹什麼和需要什麼參數.
Mac 下的 objective-c ...

这得看编码规范了。比如我见过这种:

  1. - (void) method:(int)a:(char)b:(float)d{

  2. }
复制代码
objc除了GC,也没有什么比C强的内存管理机制了。我认为对一个系统编程语言而言,gc这种玩意是没有办法的办法。而autorelease这种写法是非常不负责任的。给人一种“虚假”的安全感。实际上远远没有苹果说的那么安全。

论坛徽章:
0
39 [报告]
发表于 2012-08-31 16:41 |只看该作者
高人回复 36# qinggeng


   

论坛徽章:
0
40 [报告]
发表于 2012-08-31 20:30 |只看该作者
本帖最后由 tong0245 于 2012-08-31 20:36 编辑

回复 5# cokeboL


    学习 objectc 还是不用买苹果机或者装虚拟机。 有对应的编译器和环境。 还支持部分cocoa类库。
我下载过。不过早忘记了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP