q****x 发帖数: 7404 | 1 还有C#这种独家垄断的语言。形形色色的编程语言,真是不胜其烦啊! |
z****e 发帖数: 54598 | 2 看菜吃饭,先选平台再根据平台选语言
你要做ios开发,不会这个是不行的 |
b******0 发帖数: 101 | 3 有C的基础再加上OO的概念理解obj c就没问题。用的时候还要适应obj c的语法习惯,
再熟悉一下IDE(XCODE)齐活。下边就看个人造化了。 |
q****x 发帖数: 7404 | 4 语言设计方面有什么特色?和C++/Java的区别之处,设计者的用意何在?是不是就是苹
果公司一群老人搞的?
关键这个语言还和IDE和OS绑定,忒变态了!
【在 z****e 的大作中提到】 : 看菜吃饭,先选平台再根据平台选语言 : 你要做ios开发,不会这个是不行的
|
z****e 发帖数: 54598 | 5 让小菊花来说说,他貌似对这个比较推崇
【在 q****x 的大作中提到】 : 语言设计方面有什么特色?和C++/Java的区别之处,设计者的用意何在?是不是就是苹 : 果公司一群老人搞的? : 关键这个语言还和IDE和OS绑定,忒变态了!
|
b******0 发帖数: 101 | 6 我把我道听途说的一些列出来,有错误概不负责。
1.Obj C前身是NextStep。是Jobs离开苹果后另立山头搞出的一种语言,据说综合了C的
语法和基础类型再结合smalltlak的OO。
2.Jobs回到苹果,他的公司被苹果收购NextStep也就成了ObjC。所以ObjectC的根类叫
NSObject。
3.和C++相比他是更标准的OO语言,比如不再允许多重继承。
4.至于说语言和IDE绑定,我觉得好像不是这样吧?准确的说应该是除了苹果自己的IDE
。目前市场上没有出现第三方的IDE。 |
r***y 发帖数: 4379 | 7 4 错了, 忘了大名鼎鼎的 jetbrains 的 appcode
IDE
【在 b******0 的大作中提到】 : 我把我道听途说的一些列出来,有错误概不负责。 : 1.Obj C前身是NextStep。是Jobs离开苹果后另立山头搞出的一种语言,据说综合了C的 : 语法和基础类型再结合smalltlak的OO。 : 2.Jobs回到苹果,他的公司被苹果收购NextStep也就成了ObjC。所以ObjectC的根类叫 : NSObject。 : 3.和C++相比他是更标准的OO语言,比如不再允许多重继承。 : 4.至于说语言和IDE绑定,我觉得好像不是这样吧?准确的说应该是除了苹果自己的IDE : 。目前市场上没有出现第三方的IDE。
|
S*A 发帖数: 7142 | 8 声明一下,只是小混混,不是大牛。
ObjC 我觉得是超级优美而且效率又高的语言。
ObjC 和 C 完全兼容,无缝链接。C++和 C99是不可能
能完全兼容的。我隐约记得 template 和 C99 的结构上
的是无法融合的。
ObjC 的 interface 要比 C++ 的多重继承优美很多而且
灵活很多。整个语言也要比 C++简单很多,C++ 的 template
过于复杂。ObjC 的 OO 更接近 Small Talk。
ObjC 的语言本身是多平台的, gcc-objc Linux 也有,
而且 Linux 上面也有 GNUStep 这样的东西。
ObjC 不能很好推广,其中主要一个原因在与库。因为
只有 Apple 一家用,所以语言本身的标准库界定不明显。
很多 Apple 的库在其他 OS 上面运行不起来,给这个语言的
移植性造成了一定困难。单单是语言本身,移植性是非常好
的,基本上和 C 一样,关于 Obj 基本上没有什么变化。
特别是 Clang 以后,很多平台都可以跑。
ObjC 的 Object Call 实现是非常精妙的,用很少的代价和
性能(机器码的数量和复杂度)就实现了非常完美的 OO。
应该说,如果你喜欢 Python + C 的话,那么 ObjC 就是
类似这样的 OO + C Lib 的实现,而且速度高和机器代码量
少很多。
如果 C++ 的发明者一开始用了 ObjC 这样的方案,这个
世界会好很多。现在 Obj C 非常无奈,非常好的语言,只
有Apple 能跑。 |
q****x 发帖数: 7404 | 9 怎么无缝啊?语法差那么多。
【在 S*A 的大作中提到】 : 声明一下,只是小混混,不是大牛。 : ObjC 我觉得是超级优美而且效率又高的语言。 : ObjC 和 C 完全兼容,无缝链接。C++和 C99是不可能 : 能完全兼容的。我隐约记得 template 和 C99 的结构上 : 的是无法融合的。 : ObjC 的 interface 要比 C++ 的多重继承优美很多而且 : 灵活很多。整个语言也要比 C++简单很多,C++ 的 template : 过于复杂。ObjC 的 OO 更接近 Small Talk。 : ObjC 的语言本身是多平台的, gcc-objc Linux 也有, : 而且 Linux 上面也有 GNUStep 这样的东西。
|
S*A 发帖数: 7142 | 10 无缝就是你可以直接调用 C 的函数,
不用包装也不用 C++ 的 extern "C" 定义。
C 的头文件,直接 #include 就可以了。
除了class 定义以外, 凡是方括号里的都是 ObjC.
方括号外的就是普通 C。看代法非常清楚。
在 C 函数里面也可以直接调用 ObjC.
【在 q****x 的大作中提到】 : 怎么无缝啊?语法差那么多。
|
|
|
S*A 发帖数: 7142 | 11 简单的补充一下,C 是 Obj C 的一个严格 Subset.
但是 C 不是 C++ 的一个严格 Subset. C99 里面有
些东西和 C++ 有比较严重的语法冲突。 |
d****i 发帖数: 4809 | 12 C++03以后对于C的一部分不同是个大问题,皆是因为C++这个语言设计的ambition太“
大”,想什么都做什么feature都包括进去,最后变的异常复杂。如果定位于系统编程
,那么pure C加上一小部分C++98(如果需要OO的话)的东西足够了。
【在 S*A 的大作中提到】 : 声明一下,只是小混混,不是大牛。 : ObjC 我觉得是超级优美而且效率又高的语言。 : ObjC 和 C 完全兼容,无缝链接。C++和 C99是不可能 : 能完全兼容的。我隐约记得 template 和 C99 的结构上 : 的是无法融合的。 : ObjC 的 interface 要比 C++ 的多重继承优美很多而且 : 灵活很多。整个语言也要比 C++简单很多,C++ 的 template : 过于复杂。ObjC 的 OO 更接近 Small Talk。 : ObjC 的语言本身是多平台的, gcc-objc Linux 也有, : 而且 Linux 上面也有 GNUStep 这样的东西。
|
S*A 发帖数: 7142 | 13 说的很对,几乎所有的大点的 Open source project 用 C++
的都说,我们不用 fancy 的 C++, 我们只用小部分 C++ 精华
不部分。但是每个不同项目选定的可以接受的界定又不一样。
C++98 是不是已经有模版了,有模版就和 C99 不能兼容了。
C++ 是个典型的 committed 搞出来没有灵魂的东西,
东西多复杂,最后谁都不好用的。
所以世界如果一开始没有 C++, 只有 ObjC,而且不是苹果一家
用 ObjC,世界会好很多很多。
【在 d****i 的大作中提到】 : C++03以后对于C的一部分不同是个大问题,皆是因为C++这个语言设计的ambition太“ : 大”,想什么都做什么feature都包括进去,最后变的异常复杂。如果定位于系统编程 : ,那么pure C加上一小部分C++98(如果需要OO的话)的东西足够了。
|
f*******t 发帖数: 7549 | 14 我觉得NS那套东西不错,但基本只能在苹果的系统上跑?语言还是要靠各种库的支持,
就像C#作为语言比Java好,还是打不过Java。 |
q****x 发帖数: 7404 | 15 为何搞一套新的语法呢?扩展C的语法不是更自然?
两个截然不同的语法混在同一个程序里,可读性很差啊。
【在 S*A 的大作中提到】 : 说的很对,几乎所有的大点的 Open source project 用 C++ : 的都说,我们不用 fancy 的 C++, 我们只用小部分 C++ 精华 : 不部分。但是每个不同项目选定的可以接受的界定又不一样。 : C++98 是不是已经有模版了,有模版就和 C99 不能兼容了。 : C++ 是个典型的 committed 搞出来没有灵魂的东西, : 东西多复杂,最后谁都不好用的。 : 所以世界如果一开始没有 C++, 只有 ObjC,而且不是苹果一家 : 用 ObjC,世界会好很多很多。
|
q****x 发帖数: 7404 | 16 C#怎么个好法?
【在 f*******t 的大作中提到】 : 我觉得NS那套东西不错,但基本只能在苹果的系统上跑?语言还是要靠各种库的支持, : 就像C#作为语言比Java好,还是打不过Java。
|
c*********e 发帖数: 16335 | 17 C++ 的发明者把語言搞得太复杂了,一个c++就要学5年。
【在 S*A 的大作中提到】 : 声明一下,只是小混混,不是大牛。 : ObjC 我觉得是超级优美而且效率又高的语言。 : ObjC 和 C 完全兼容,无缝链接。C++和 C99是不可能 : 能完全兼容的。我隐约记得 template 和 C99 的结构上 : 的是无法融合的。 : ObjC 的 interface 要比 C++ 的多重继承优美很多而且 : 灵活很多。整个语言也要比 C++简单很多,C++ 的 template : 过于复杂。ObjC 的 OO 更接近 Small Talk。 : ObjC 的语言本身是多平台的, gcc-objc Linux 也有, : 而且 Linux 上面也有 GNUStep 这样的东西。
|
d****i 发帖数: 4809 | 18 客观的说Obj-C和C#都是被苹果和微软的自私恶名给连累了。C++和Java因为都是可以在
不同的OS上跑,而且分别有ANSI/ISO和以Sun为核心的JCP这样的“民主委员会”,所以
成了主流语言。
【在 f*******t 的大作中提到】 : 我觉得NS那套东西不错,但基本只能在苹果的系统上跑?语言还是要靠各种库的支持, : 就像C#作为语言比Java好,还是打不过Java。
|
d****i 发帖数: 4809 | 19 high-tech这行还是认历史传统的,操作系统的黄金准则是UNIX,那么由于C++和Java一
开始都是在UNIX上跑,自然就被认为是血统纯正的语言(参见UNIX下的编译器名字: cc
(这个在Solaris下恰好和C编译器同名)和javac)。C#从Windows下面开始,Obj-C从
Nextstep下面开始(虽然NS也是一种类UNIX系统),但是已经失去其血统纯正性。
【在 f*******t 的大作中提到】 : 我觉得NS那套东西不错,但基本只能在苹果的系统上跑?语言还是要靠各种库的支持, : 就像C#作为语言比Java好,还是打不过Java。
|
c*********e 发帖数: 16335 | 20 windows,mac是同期竞争对手,他们发现,只有用自己的語言,才能把自己的产品牢牢
控制住。比如,要用objective c,就必须用xcode做ide.这样用户必须买mac的产品,而
不是象java那样,用dell卖的win7或者macbook pro,都可以用eclipse做ide.
apple做得更绝,连iphone充电线都是自家的。android的好歹可以用黑莓的充电线。
cc
【在 d****i 的大作中提到】 : high-tech这行还是认历史传统的,操作系统的黄金准则是UNIX,那么由于C++和Java一 : 开始都是在UNIX上跑,自然就被认为是血统纯正的语言(参见UNIX下的编译器名字: cc : (这个在Solaris下恰好和C编译器同名)和javac)。C#从Windows下面开始,Obj-C从 : Nextstep下面开始(虽然NS也是一种类UNIX系统),但是已经失去其血统纯正性。
|
|
|
b******0 发帖数: 101 | 21
C 到C++是一个演化过程C-》C+(c with class)-》C++。C++不象java最初就本着oo的
基础设计出来的,C++包含太多不同时期加进去的东西。
【在 c*********e 的大作中提到】 : C++ 的发明者把語言搞得太复杂了,一个c++就要学5年。
|
S*A 发帖数: 7142 | 22 ObjC 本来就是扩展啊。C 里面本来没有 class object 这些东西,
肯定是要引入新的语法的。至于是方括号还是什么的。
其实我觉得现有的ObjC 就很好,看着很清楚。
不会搞不清这个是 Obj Call 还是普通 C 调用。
【在 q****x 的大作中提到】 : 为何搞一套新的语法呢?扩展C的语法不是更自然? : 两个截然不同的语法混在同一个程序里,可读性很差啊。
|
S*A 发帖数: 7142 | 23 不是,可以在 Linux 下面跑。 GNUStep 就是这么跑的。
CoreFoundation 这些应该是可以的。
ObjC 的好处是你可以直接用 C 的库。
加上 CoreFoundation 也基本够用了。
苹果自己的库就不行了。
【在 f*******t 的大作中提到】 : 我觉得NS那套东西不错,但基本只能在苹果的系统上跑?语言还是要靠各种库的支持, : 就像C#作为语言比Java好,还是打不过Java。
|
S*A 发帖数: 7142 | 24 object C 可以用自己的 IDE。就是个命令行编译的东西。
我以前项目是自己写 Makefile 的。
【在 c*********e 的大作中提到】 : windows,mac是同期竞争对手,他们发现,只有用自己的語言,才能把自己的产品牢牢 : 控制住。比如,要用objective c,就必须用xcode做ide.这样用户必须买mac的产品,而 : 不是象java那样,用dell卖的win7或者macbook pro,都可以用eclipse做ide. : apple做得更绝,连iphone充电线都是自家的。android的好歹可以用黑莓的充电线。 : : cc
|
q****x 发帖数: 7404 | 25 函数定义都变了。你是习惯了,对新人来说这就是个障碍。就像vi用熟的人觉得它很强
大,可还是有越来越多的人用IDE。
C++更流行不是没有道理的。
【在 S*A 的大作中提到】 : ObjC 本来就是扩展啊。C 里面本来没有 class object 这些东西, : 肯定是要引入新的语法的。至于是方括号还是什么的。 : 其实我觉得现有的ObjC 就很好,看着很清楚。 : 不会搞不清这个是 Obj Call 还是普通 C 调用。
|
b******0 发帖数: 101 | 26
C++更流行恐怕不是函数定义的方式导致的吧?
如果说新人是指没编程基础的,ObjC绝对比C++更适合。
【在 q****x 的大作中提到】 : 函数定义都变了。你是习惯了,对新人来说这就是个障碍。就像vi用熟的人觉得它很强 : 大,可还是有越来越多的人用IDE。 : C++更流行不是没有道理的。
|
q****x 发帖数: 7404 | 27 当然。但我认为C++延续C的语法,而OC另起炉灶,是一增一减。
Java和C#也比OC这一点上强啊。
【在 b******0 的大作中提到】 : : C++更流行恐怕不是函数定义的方式导致的吧? : 如果说新人是指没编程基础的,ObjC绝对比C++更适合。
|