9 h, y% L8 u' K1 X ' i( X* r4 Q. U9 T8 y3 r . j( k) l# y3 i4 K" r0 s
zhangxiuyong 来自 <a href="http://www.ucancode.com" target="_blank" >http://www.ucancode.com</A> : $ @& a* T4 {/ z% x8 [$ [8 P# S2 a
1 w5 t ?( T. @; j7 |/ G
其实我认为,对于Visual C++本身的理解不是向你上面谈到的那么简单,Microsoft ( X5 e* Q. ?" h1 F3 y
在开发Visual C++的时候是希望为其开发人员提供一个可靠的开发平台,便于用户可以 $ _ d' S0 \- W! \: W4 M# k为Windows上面编写各个方面应用程序,包括:数据库应用程序,硬件驱动程序,网络程 k; D5 }' k5 w$ P4 T序,多媒体程序,游戏程序等等方方面面,试想如果一个开发平台要同时完成这么多个 ( g( s/ H; z1 y% g6 U
方面的开发任务,是需要考虑多少的问题,因此Visual C++在设计的时候就考虑了提供 ' V) a8 c" f- w# M% s/ u# N6 A一套类库而不是直接提供黑匣子式的开发组件来完成开发任务,提供的类库MFC具有很灵 4 q" a. }8 d. b( a活的设计结构,以及良好的继承性,同时配合DVS文挡视图结构来组织程序开发,虽然我 2 W* g$ R6 V1 Q2 _9 O D q- E
们承认利用VC开发程序(数据库方面的程序)没有其他的RAD开发工具来的快,但是如果 ! f4 p1 a, V& D你真正利用VC来开发的话,你会觉得你不会去选用其他的开发工具的,对了各位听说个 ' v; [" Y$ a0 \ O! q多少开发人员是从VC熟练的开发师转向VB,Dephi的开发工具的吗,当然DVS结构本身也有 # X/ }4 ]& J6 d* E
其很大的弱点,如很难重用。同时在CView中再嵌套CView的变得不可能。不过对于开发 ; J0 v) `1 Y K k中小型的程序(代码在50万行以内的程序却是可以的了)。对于特大型的程序我想最好 ; H. Y) D4 \/ r& `! w( O- N) H- I可以借鉴一种新的技术叫做MVC的开发技术来组织你的程序吧。好了各位此些文字,仅代 . n+ t+ F+ I0 o7 v2 I, J9 `) F9 d
表个人之言,如果各位感兴趣可以到:http://www.ucancode.com上面看看。 : z7 Z6 Z5 h' }! W+ s8 r5 N+ v( E& H : f" y- D6 G: z X" [ zhangxiuyong 来自 <a href="http://www.ucancode.com" target="_blank" >http://www.ucancode.com</A> : + j9 u; z, i% l- z) @% K) X7 P
7 i5 O% m. g3 Z: N' n7 c1 o" O 其实我认为,对于Visual C++本身的理解不是向你上面谈到的那么简单,Microsoft # G# k6 i$ W; d# ]" a7 x在开发Visual C++的时候是希望为其开发人员提供一个可靠的开发平台,便于用户可以 ( s F* g* {; T& z8 t
为Windows上面编写各个方面应用程序,包括:数据库应用程序,硬件驱动程序,网络程 " L& l; \& `# ^; |! R序,多媒体程序,游戏程序等等方方面面,试想如果一个开发平台要同时完成这么多个 " b! I8 n( P! d( o& h方面的开发任务,是需要考虑多少的问题,因此Visual C++在设计的时候就考虑了提供 & e& L1 L0 R- d3 b
一套类库而不是直接提供黑匣子式的开发组件来完成开发任务,提供的类库MFC具有很灵 * o5 E' K" j |: z1 A活的设计结构,以及良好的继承性,同时配合DVS文挡视图结构来组织程序开发,虽然我 3 L4 y' B& @7 L w们承认利用VC开发程序(数据库方面的程序)没有其他的RAD开发工具来的快,但是如果 4 ]# V1 j7 X/ G6 y7 [+ I
你真正利用VC来开发的话,你会觉得你不会去选用其他的开发工具的,对了各位听说个 7 L& J- n8 Q! k b多少开发人员是从VC熟练的开发师转向VB,Dephi的开发工具的吗,当然DVS结构本身也有 5 C' u! u& k/ H1 `3 A- }其很大的弱点,如很难重用。同时在CView中再嵌套CView的变得不可能。不过对于开发 0 x# w3 y/ z* e中小型的程序(代码在50万行以内的程序却是可以的了)。对于特大型的程序我想最好 e8 L2 Z, \% R
可以借鉴一种新的技术叫做MVC的开发技术来组织你的程序吧。好了各位此些文字,仅代 # L1 [9 {1 p( w7 v
表个人之言,如果各位感兴趣可以到:http://www.ucancode.com上面看看。 - }/ v* f4 ]! Q z2 J 2 L* ~9 N T! r9 a! M2 ?
zhangxiuyong 来自 <a href="http://www.ucancode.com" target="_blank" >http://www.ucancode.com</A> : : d6 I$ G* D9 F' P7 k
2 N# t" T7 g0 Y, K$ c 其实我认为,对于Visual C++本身的理解不是向你上面谈到的那么简单,Microsoft # _9 A5 M) h% r7 T6 [
在开发Visual C++的时候是希望为其开发人员提供一个可靠的开发平台,便于用户可以 2 G% Z0 {- i/ H$ s5 u! K为Windows上面编写各个方面应用程序,包括:数据库应用程序,硬件驱动程序,网络程 ( M( w6 i8 e y2 ^& n% h序,多媒体程序,游戏程序等等方方面面,试想如果一个开发平台要同时完成这么多个 9 Q5 f1 Z' n! V4 i2 G
方面的开发任务,是需要考虑多少的问题,因此Visual C++在设计的时候就考虑了提供 8 |/ Q/ S' Q% H* g一套类库而不是直接提供黑匣子式的开发组件来完成开发任务,提供的类库MFC具有很灵 # v$ ~. L+ s( ]
活的设计结构,以及良好的继承性,同时配合DVS文挡视图结构来组织程序开发,虽然我 8 y+ w; T& ~: ~们承认利用VC开发程序(数据库方面的程序)没有其他的RAD开发工具来的快,但是如果 2 m) w, V( {. ^% t你真正利用VC来开发的话,你会觉得你不会去选用其他的开发工具的,对了各位听说个 4 `& W: N# C( d1 t多少开发人员是从VC熟练的开发师转向VB,Dephi的开发工具的吗,当然DVS结构本身也有 . Y0 T: a, `" H2 S) x9 s$ J* {) H其很大的弱点,如很难重用。同时在CView中再嵌套CView的变得不可能。不过对于开发 2 z- D; K5 p" E1 [- w中小型的程序(代码在50万行以内的程序却是可以的了)。对于特大型的程序我想最好 2 F; v: Q, s; _) a; I0 V n, ]可以借鉴一种新的技术叫做MVC的开发技术来组织你的程序吧。好了各位此些文字,仅代 ( f; o0 i( G; n5 x
表个人之言,如果各位感兴趣可以到:http://www.ucancode.com上面看看。 1 v6 d# H. D$ { 8 o8 b. @0 B2 Q: ^2 I8 K: ~9 i
wenyy 来自 <a href="http://www.vchelp.net" target="_blank" >http://www.vchelp.net</A> : * K% G6 s* H7 o, B8 d. m0 m $ U- W( T1 C3 A6 j4 n
我一定程度上同意 恶魔吹着笛子来 的说法, . X* e: ]& a: H' l0 z( x5 Q; ~
1 M7 h) c: {! n
毕竟VC开发速度是比较慢的, " G: {) I3 m0 ~4 _1 T f $ b u l9 }7 F9 g 而且硬件速度的大规模提升也为使用JAVA开辟了道路, 4 y9 } f4 `7 K& `5 b' z1 R8 S
' r1 t1 X" N8 q7 ? 不过microsoft.net的目的是一定程度上改变MS的经营性质,和开发关系不是很大,但 ( W. v m+ @0 x& Z- H& f, d
是MS的一贯方针都是在平台上为开发人员提供方便, 5 M% Z6 f8 g3 p7 @' n) D$ }
: y5 i- w) M: T+ e2 \3 h4 r: V( @ 所以C#是为了.net服务的。 * x e) l* A( p$ s2 j z( A; Z & e8 h$ w4 u, c ' w2 k8 x7 x0 _4 x
此外我想我没有精力再搞个c#help.net了。:-P , R( L* C, S# R( I: @* t! e + `- K F! E8 ?( `4 k
果子 来自 http:// : 2 g: ^# V( \8 P" \2 Y, U, \; X
$ O) M: S1 p7 x- l+ o& C "恶魔吹着笛子来"是比较“前卫”的一类程序员。我就听业界的人多次说过JAVA也是 ; y& ]: m# V, G- n; `% X% W9 v& K 8 i, P+ h" |$ j2 M
& U' H( i' u7 \ 个吹得很响的东西,但实际如何,大家都看得见。至于认为C/C++开发工具(VC, ' T6 B. W- x2 z. J3 S3 f7 @: S % m, O" j& P" { ]. M9 ~3 S& n4 f
BCB等)会在一两年内退出市场,就是无稽之谈了。 / D3 ?8 f$ L3 h( e1 H6 y5 p7 e
* f, U9 b0 V) \4 }5 B( A0 g9 L. u* B Wesley 来自 http:// : ! ]9 d0 o' A. e# r' i : o6 F0 g* ]- o& }: [0 h% f# j 恶魔吹着笛子来,你的观点很有启发性。能不能写一篇或推荐一篇剖析、比较Java开 ( r8 W% ]! z/ Y2 p, [# y发工具的文章?比如Visual J++, JBuilder,以及Symantec和IBM的对应工具。(可能和 ?6 z; L5 ~5 z. Z5 r0 {本站的初衷有些不合^o^) 9 k' |% p" f% i0 o6 N
! M) k$ h e2 R( ?' u) o8 z
LeoCN 来自 http:// : 9 u) W3 M' C _# A . ^: T0 G4 H/ Z; E It's not a time for us to determine which language will more better! 5 z6 l! w) h* y9 }# ~) i: b, ?& [ - m$ Z# i2 {3 p0 C- P
in factly,In China,too many corporation just writting some codes for 7 U! s: R" v3 [# [. c3 Y
4 i8 M* _ D' P1 G+ ^& n
enterprise's MIS,OA,ERP or other application.It do not need so speed , e* W: ?. S8 x
' T1 Q$ m' c, ?/ U- W and do not need so good original code. just want more data,more easy and m # H9 E# w4 r: U0 A0 ?' C$ I- P" Iore quickly. + B. G8 X6 H5 a: J& ?& N
$ T4 d9 m3 z; p so c++ is not a choice in such enviroment. and u know,many codes we write / E2 w# b7 b$ r
today will be useless.and there r so many easy tools such as VB 2 L" }" ]5 Q/ a8 I% o
3 n g- d" z$ J% u' a for windows designer, Developer/2000 or PB for database,Domino Designer fo & n* j* f3 B: a: k
r OA application,why c++??? 3 [* z6 J7 \1 d" H. n% ` , k6 C" v6 ]1 r: z0 X in DOS mode. i like Turbo c2.0, with it and MASM i can do everything. 9 C- S2 {! p7 ^ % G9 a6 ` T0 M+ r* D but now i hate c++, it has waste my time! my corporation do not need 2 N% ~' p" [2 n" a; y$ z& \# m
9 ^5 P3 O5 \7 A& i5 Y5 D/ r
c++,just need java,xml,php,pb,vb,delphi,developer/2000,domino designer etc 5 j0 P+ a3 r; ?0 B; `; L
. 9 B+ }" ^# [* l& F* O& z, K3 v% c / @6 C- W. B& f; ] d4 x so, a tool is just a tool,if the advantages in some aspect of the tool 8 g7 |/ f9 i6 G + ^' I* O+ A1 {) P/ [: e
u needed. it's will be a good tool for u. others it can bring u unfortunat 4 \ I, F4 U1 J8 T- I1 l: k
ly! 2 {# M7 p+ f) `$ E; _0 i K {4 {0 [5 ~' ?( Q/ p" ^3 R
恶魔吹着笛子来 来自 : 0 A! r+ c9 a. Z; n' }) e e
4 O5 u$ ^& B( U0 F 果子,国内的Java应用不到10%基本上是ms的天下.这些可能是由于中国软件业规模太小 6 g N& M k! F+ Q
的缘故.而在国外40%的商务系统的开发都是Java,c/c++不到10%.譬如BEA公司一个有3个 0 |8 x8 W; a; m2 c9 g
java程序员创立的公司开发了第一个基于J2EE的Application Server---weblogic.BEA公 0 }' ~3 v9 n7 Q1 [+ b# u( ^司依靠weblogic在短短4年里成为世界第四大软件公司仅次于CA公司.可见JAVA的功能是 5 j: g) ~4 _* U+ q
如何的强大.微软的.NET的负责人说,你们想要知道.NET是什么样子,那就去看看JAVA.JA 2 p: n* R% k# l* J X: u0 P5 N6 BVA是什么样子.NET就是什么样子. # H8 ]) P0 ]/ K4 i: m
2 W+ Y+ M* n4 U/ G4 j+ p
" y+ z. d7 W' M+ }
+ ?4 j$ i! A R$ L2 B
恶魔吹着笛子来 来自 http:// : 6 q8 d* G, }6 P; Y& e 6 \! l, L& ]" V9 o- f* ] U
Wesley你好.关于Java开发工具的问题.从我的观点来看,目前的Java开发工具没有一个 $ t# E. K8 b8 ~5 J V! E1 K令人满意的.最主要的是,在技术上考虑的太多,却不像MS的开发工具考虑到程序员的方便 . E+ C! Q3 Q- X+ A$ r(vj++是另外一会事情我后面会讲). $ e+ e" K& ]7 k3 W1 y 1 t0 l1 x' z/ b( k 基本上流行的是sun的jdk,ibm的visual age for jave,samtic 的visual cafe,和bor . N+ q& f; k; w3 m
land的jbuilder(vj++基本上没有什么人用). 5 ^) l/ ]5 E4 r7 c6 p
7 _# Z) g) c% ^' o+ W5 x% } 在这几个工具来讲,jdk是老大哥,但是仅仅是一个command line compile.在某些方面 " I; K: O" P; n8 l
用ultreditor+jdk会比较方便,譬如你的机器的配置比较的低(memory<64M).一般来说,几 # n: H/ E: o& u7 N3 q4 ^
乎所有的Java工具需要的机器配置都比较高. " u r' {3 h. I & [& v/ t# B* j
visual cafe是第一个可以使用的Java IDE工具,我当初学习Java的时候就是用这个.它 8 P& S" g+ o" T/ n5 s) S: I9 ]
的配置要求比较低.一些比较低的版本譬如1.5 2.032M就可以使用了.但是现在最新的版 1 e( X( E$ x3 {! z1 n, m
本5.0的要求就比较高了,可惜2.0以后的版本没有用过.cafe的IDE开发也不是很方便,懂 5 Z) \& X7 L6 Z2 L. x5 \" v一个窗口西一个窗口比较的乱.而且bug还很多.有的时候trace到一定的地方 - i6 L; B+ l* @, G4 U% L q
/ X% l& n0 D, S2 B 就会crash.samtic是一个系统安全公司不知道为什么cafe却那么不稳定.而且从技术上 ) N: [) N! S) P& C5 V2 A来说到目前为止还没有完全支持java2.更不要说j2ee了.从帮助来说cafe的帮助基本上还 : g$ T2 M& x, j
是jdk的帮助没有什么特别的地方. 6 _! n7 F5 h6 y, Z9 ~' Q$ b& D- x 7 E8 s" N& z9 i( {5 @' m IBM的东西往往是吹的比做的好.visual age很复杂功能也很多.支持100%pure Java和 $ s2 ~7 \3 h. j. m) k" X1 FJ2EE.但是使用起来不方便,当初为了设一个class path找了半天的help都没有结果.后来 & X6 T7 B+ [$ \. b' K0 [" J6 C" ~听别人说要在nt下面设置环境变量才能成功.而且与其说是visual age还不如说是comma " `/ ^9 u0 M& g5 R( e6 ^
nd line套了一个windows壳子.做application还要自己写layout代码更本就不visual. 4 Z3 S/ O1 o# p
0 o7 x( @% x: l% U& | J$ g
Jbuilder是我目前遇到最好的一个,它的界面基本上和delphi c++duilder差不多.他是 V+ O, H- b5 ^! v# S4 o. @. H第一个真正的java的rad系统,第一个全面支持j2ee 13项Java技术的工具(bean,jsp,rmi 4 E9 w% Y) U+ |* Z都实现了).100%的pure Java.相当全面的help document. ' L9 A8 E6 f( @5 f8 j* A0 L& ^ 0 k" I* l: E, ]5 f: D 但是他最大的缺点是系统要求实在高,没有128M别想用.64M下面慢的像乌龟,help更本 6 f6 f* ~2 `3 B- S: S5 |不能开(它的help都是java写的64m下面打开help慢的能够看到一格一格awt画窗口的过程 $ Z* ?8 ]; x9 A6 }: p
).但是不管怎么说他是一个比较理想的系统. 2 Q, f/ j" B) `" n! i' D' }' E
9 u2 p" K1 R- k' Z+ O 数据库?oracle8i就是JAVA开发的 . u3 t; T! [' n' G$ j
" U/ U; N+ ]3 Q% D4 |% ~5 ]) }
游戏?你也许没有见过用DELPHI开发的<笑傲江湖><风云>,甚至有VB开发的<神龙教> . T" J# `# |3 R3 L& S( v " T) A! l# L2 S0 L
同时VB7.0全面支持direx8.0.可想而知游戏的难度会大大的降低吧. ; R i) o! c- o5 A+ w+ y0 X' W 7 z m1 w/ n) S5 o: J( F* a/ P MVC=Model, View, Controller Design Pattern " A) d: |& p, q1 l1 ?$ ^! ?5 M4 V/ `
/ B0 u5 ?! f+ s 2 |% ^9 @7 a4 V$ C . `- ?( T: c2 g& y
恶魔吹着笛子来 来自 : 6 a* `" Y. n# p) [4 @ 6 k! m% ~; j1 o& R) a' h( `
什么样的的软件只能用c/c++开发? 4 S0 R' D( u- L# Z 4 h7 d% N' B e' L# A
操作系统?apple的OS7,os8,os9都是PASCAL开发的. " ?1 u0 C ^; y" Q! w) u" V 9 O0 X8 y5 M! h" E4 }7 j
数据库?oracle8i就是JAVA开发的 2 s1 a! V- h) S " E1 d h3 V/ u: y1 W 游戏?你也许没有见过用DELPHI开发的<笑傲江湖><风云>,甚至有VB开发的<神龙教> 0 p8 A# i6 L2 Y # u' B" ^$ r! N2 U$ a, U
同时VB7.0全面支持direx8.0.可想而知游戏的开发难度会大大的降低吧. . o& g/ O4 L# z% n$ e d9 [ 7 v% s8 A' S2 D! I& J
我的意思不是说c/c++会消失而是应用的范围将会大大的降低并且将会进行脱胎换骨的 ; u* B- z! o0 ~8 q' o% ^& W升级(用了20几年升升级总可以吧,java的升级不算太成功,但是是一个不错的先例我想c ! @0 r7 B6 ?, _; n#的前景会更好). % _- \7 B, L [
* U+ e; X4 i, C, {3 A# C BTW: % P. v) D4 [0 D 5 k: }% }) W$ u% P6 I' R
MVC=Model, View, Controller Design Pattern * r7 u1 w2 \. ?# [6 C - V& m; f% V. D) v- i! p9 [ ) I H4 f% G' `/ j ( Z# e7 }4 M+ Z5 F4 X
xubin 来自 http:// : / J1 S6 M% ^6 B ' `1 k- D6 {. H$ z0 V( M* n9 k 在工业控制中,直接对I/O地址操作,就要用C++。 & J8 T) K j4 Y3 B3 o' C + q; I, f) O, n. K$ \9 H 恶魔吹着笛子来 来自 : 6 D5 o6 a/ y. z- H# ^9 Q 8 E2 Y6 v. k* J" u i' I, d" h
俺有一个同学毕业设计用VB做单片机。你这不是在讨论问题是在抬杠。 - |( N+ x' y _, `! J+ ^
5 S% Z5 e w7 m. O wenyy 来自 <a href="http://www.vchelp.net" target="_blank" >http://www.vchelp.net</A> : $ ]: E3 M8 D# a6 b * ^; {4 H- C0 {( c# a! V8 g
我想一种语言并不会因为其他语言的出现而消失, ! Y" s) C" |. j' t! C 3 d( n8 |& V0 ?5 D
比如说c与C++,C++与C#的关系。 2 z N: N1 S2 }9 g3 E3 ~
/ E2 K- l* T5 S3 |% l 所以我想讨论问题时首先是要排除敌视, $ H8 q9 \* y$ N" }' S4 E
( o, [ G$ G' \* P6 e5 W
然后才是透彻的分析。 4 n) w7 @9 ]5 \1 } 7 [$ |; d7 U" v# l IT世界不光只有网络,还有其他很多。 ! b1 ~! ^! G. A# E0 v4 q2 V, H2 @: |
6 N4 d: P8 s: O4 Z) _' B0 f 所以某些工具在一定范围内适用是正常的, 4 H0 [& K; E' F # A* k5 n3 @' N( a 其实在国外, , X% c" P( Q) }" V
& i ^7 f5 H, `1 l& v3 E. | SERVER端软件大都用JAVA,而CLIENT却没有多少用JAVA, + q6 H( F) g/ w( i) [/ m( \
) b9 O! o& u5 K3 s# k
这和速度有关,当然也与MS对JAVA的态度有关。 1 `# }0 H7 c' E
1 L4 O t @8 h! G8 z1 t# {% C: A" s + }, r* o* w6 ~9 ~ 不过我一直认为C/C++不会因为JAVA的出现而消失。 3 m! v' y# E" K ; B; z; e, C2 k+ o% O
就象COBOL目前为止还在使用一样, " {7 V2 o# u" t5 |0 h" B& z
5 P! {8 E, }% ^. f5 f ) b& G3 u& m0 P# j) f3 Q8 r# a2 T 不过以后会有愈来愈多的解释性语言出现,因为解释语言比编译语言的兼容性好,这 $ o! j$ G! @$ P* X. u# I; v% e是不得不承认的。 # g2 Y4 d2 o2 C5 h. n% }
1 X+ A% B6 f. ^9 X3 j6 y0 s
恶魔吹着笛子来 来自 http:// : # v2 c" P; H% @* H7 B
" @: r9 ?3 T0 h/ ? P- L9 G 是的wenny.也许我说c/c++的消失有点夸张化了,但是实事求是的说.java和c#的出现 ) ]4 }6 ~& q3 u6 P% H" B
" w- p- B, k# ^5 s c/c++的升级换代是在所难免的.对么. 6 ?! N) E8 `; @# I& d
9 y; @' a/ q C
恶魔吹着笛子来 来自 http:// : 9 o% R5 c- A; M( w% Y4 N % L$ e* z! n, u+ z$ I 而且我一直认为java和c#不是另外一种语言而是c++的升级.就象是c到c++的升级一样 3 b0 _) q& k |9 X% X9 l7 N.对不对. 3 v! J, \ w0 B" X& f1 b * V5 n- e6 f6 q4 S/ S* B; ? xcc 来自 http:// : 9 j9 O& E5 n3 P) V L& p
q% {# ?( a9 D 同意恶魔吹着笛子,你简直是我的偶像,顺便贴一篇关于C#和.NET专访 3 m- w% M+ t& G4 l- K ; G) B. z3 o' N) B; r
NET and C# Questions with Jeffrey Richter 2 J% M5 w6 e9 I! f 3 s" v1 M: E4 B In the weeks after Microsoft made a huge splash in the development communi ( [- k# w; C2 p7 b1 O: T
ty with their .NET and C# announcments at the July 2000 PDC, Jeffrey Richter 5 ~1 c3 c$ I' e6 M/ e- b: Q accepted our request to field 20 questions from our readers about these new $ ?" ^3 x. G& K+ N* }4 q7 y technologies. As many of you already know, Jeffrey is a cofounder of Wintel 9 G. W$ C: L3 }$ Qlect, a company that specializes in Windows & Microsoft.Net training and deb # {$ L& [8 p. a+ l! Yugging. Jeff is also a consultant at Microsoft working on the Microsoft.NET $ ]1 X6 H6 O8 p) p$ Q- |3 U& sCommon Runtime Language (CLR) team in which C# and Visual Basic 7 applicatio " c Q4 X/ G+ h: t- Z+ M
ns operate. Below are the 20 most popular questions that were sent in and Je 3 c( l/ F( r( }. G* }' L) f* Y
ffrey's responses. & q* M; V; h' L6 S
. G& V9 s7 [8 i# b* s- J4 | For Visual C++ developers everywhere still trying to get a handle on all t X- D" w$ ~( H6 y' {his: Thanks Jeff!! : Y( L, Q- G& n3 ^7 f8 S9 C ! `$ \/ B+ M5 n" n+ v9 L
! `, s i" G& w Question #1 Is .NET a runtime service or a development platform? : b4 k: z& _& M- v: L
' H9 q& }' L0 _; O; Y Answer It's both and actually a lot more. Microsoft .NET is a company-wide 2 \6 P3 b- ]6 {1 Q! u initiative. It includes a new way of delivering software and services to bu ; ?/ f3 q7 T- X+ c1 f
sinesses and consumers. A part of Microsoft.NET is the .NET Frameworks. The ! o5 w m0 c& H6 w a6 \frameworks is the first part of the MS.NET initiate to ship and it was given 6 S! i) D" n M. y7 E$ C, H
out to attendees at the PDC in July. The .NET frameworks consists of two pa 1 R3 b/ e0 |$ W" }, H3 o
rts: the .NET common language runtime and the .NET class library. These two ' f$ @8 s4 I$ H6 M" B9 G+ Mcomponents are packaged together into the .NET Frameworks SDK which will be : \- U6 D0 x1 e$ w& r
available for free download from Microsoft's MSDN web site later this month. ) q( L# H8 C! Q3 t; ]) O
In addition, the SDK also includes command-line compilers for C#, C++, JScr 4 o( X! }5 L$ z2 F, x/ m# _ Uipt, and VB. You use these compilers to build applications and components. T 6 {+ l: i# ]4 c$ i: s2 O2 e" O: `8 These components require the runtime to execute so this is a development plat ) ^$ K- |) @, t" wform. When Visual Studio.NET ships, it will include the .NET SDK and a GUI e 0 `9 K9 O% d: c
ditor, wizards, tools, and a slew of other things. However, Visual Studio.NE 4 V, |& v% b) w- KT is NOT required to build .NET applications. 0 S" L8 _' ] g; c! x ; U8 ?0 Y- m+ D/ M- R; w 8 V3 @6 N- z! e9 [ w, S
Question #2 How likely it is for C# to become a general-purpose (meaning: 1 V$ ]# _! [6 Q/ ^not MS-specific) language and if so, have any other vendors committed to pro : O" {! b6 E! g. D; wviding compilers on any non-Windows platforms? 9 x+ K& B$ A* p1 T( X+ ]% R % D, y* m* b7 Z9 l0 B9 U# U9 k Q Answer It's hard to answer this right now. I have been programming in C# a % V7 R! T% c- T; e8 s8 g
lmost exclusively for about the past year and I love it. It only took me a f 9 q/ K* A/ L6 ^8 mew days to learn most of it since it is very similar to C++. It was designed ( x! M, [+ k: G) X: U/ E& ] {9 K
to compliment the common language runtime and I think that it's unlikely to ) l+ Z+ @: A0 H1 K gain much momentum if decoupled from the runtime. However, you never know. , }. z3 e' G _% ^$ e
Microsoft is submitting C# to the ECMA standards body so any company will ea $ ~2 G8 W4 h! w* K
sily be able to produce their own C# compiler however, without a runtime, th , [% f* \- H; ?! p7 g# v
e compiler itself is not that useful. I'm not aware of any companies current 6 v; Z. n* M) d5 l5 U
ly working on their own C# compiler. Certainly, porting the runtime to anoth . H7 T% s1 h# ], D: h
er OS is no small undertaking. % [; }+ W+ t2 u& g
" P1 B+ m1 a2 p ; x% f& a; ~7 w* Z; ^
Question #3 Can you tell us specific practical problems that C# can fix be # D' t8 J* n* K, ?
tter than Java? 0 i7 o6 ^5 M( N/ l ; I& `7 f4 }- ~- V$ T9 n Answer I must be honest with you: I have never programmed in Java. I know " q' t3 ` a: s$ n- {
what C# offers the C/C++ programmer: simpler syntax, components that seamles " ?/ F! L- S* J
sly fit together, type safety, and so on. Other people should be able to add : f+ j" Z# o. e$ o
ress the C# <-> Java comparison. : n- q! S! J( c! L
2 `9 L' q- Y- |) o @$ s5 I: K5 ~' S7 s7 ~
Question #4 Will ADO+ be the preferred and most efficient method to access $ P7 `9 I2 J. o6 b1 h databases from C# or will it have it own (or .NET) class wrappers for the O - ~$ H* p8 c( T' aLEDB API? 4 @- u. o* P9 B6 g5 P / i/ M/ [3 \. |7 G Answer The .NET class library includes a System.Data namespace with many t 5 V3 K# z, h% F: D( S' r
ypes for database access. These wrappers will be the best (and most efficien % @$ }" N* d: H1 [ k2 s
t) way for a C# programmer to access data. $ }5 z' V. \1 Y) I. F5 ^4 ^2 M
a" R, x' w" N. t7 r/ S
$ D1 J; M$ d4 _4 E$ K& k
Question #5 Can C# be used to develop Windows applications or is it soley 8 D7 {7 `( z! o0 T% X9 C. s
used for developing distributed applications? ' ]) S$ q( x) {. G
0 @7 `: ^# Z7 W, g Answer C# can absolutely be used to develop classic-style Windows applicat + P9 ?8 m- s6 R. Dions. Actually, this is more a function of the runtime, not the language. So 1 z2 g; J3 b+ y) U, the runtime supports console apps, GUI applications, NT Service applicatio h) X6 e& Z3 |0 }# A: Q9 W
ns, simple components which can be used in applications, web pages and so on 3 d2 |( ~ }, p3 p. You can't write a device driver but that's about all I can think of that t " ? e: Z/ y9 t. a) X
he runtime doesn't support. 7 v/ X7 R! Q! I2 A O* R
9 A5 D0 b; |: ?4 Y# w; |+ j6 t
& t' G6 c7 _' i, E5 M
Question #6 What is the C# relationship to WinForms? 1 n( @) c/ }- ^* b; K; z
3 [' E, c5 E) W7 x. j0 x9 ~5 [ J Answer Win Forms is a set of classes in the .NET class library that wrap W + f- E4 _ N7 vin32 windows, brushes, pens, etc. Any language targeting the runtime (includ 1 S; ]6 @0 u5 b9 h1 Ving C#) can construct instances of these types and manipulate them. This is % V+ A W! G0 A
how you would create an app like Notepad, Calc, or Wordpad. I know that Win / d* F2 B3 Y% r' |$ o
Forms has similarity to J++'s WFC library but I also know that there have be % v; y5 Z, f }8 j2 L8 Ien some major changes. ) Y2 _+ v7 e. J+ X0 Z5 |' v
7 D/ {) j% @! k* r4 A T ~' u& X \1 D, X Question #7 Rumor has it that the C# language has been submitted to the EC ! ]# Z) v" w( Q, l. b( [MA for ratification. Is this true and what impact do you see that having on : E' |- m! N2 Q" T- `
other companies adopting it as a general language (such as C and C++)? 7 E8 X7 s: y6 z- P% x3 Z: E 9 Y3 q3 E" e1 ^4 J' ~0 M# ]( v8 q
Answer Yes, it is true. I pretty much answered this in question 2. $ B t) @" d/ e0 y% z
9 Q0 `5 R7 r9 F : H1 k% c% W( b* J4 a. K" P Question #8 Which will be the role of ATL and COM in the new .NET technolo + n3 s& g; t2 \+ H1 b' Z4 s: E- Z) k+ D
gies? 4 w. S2 g( |/ U0 K" R0 s7 L l6 Y' j; e & M5 p4 f% G( N1 R Answer The .NET frameworks offers a replacement for many existing librarie # `- v. n- ]: H% { `5 ds, like ATL, MFC, C runtime library, standard template library and so on. .N ! k7 @6 d& k) J3 a/ d0 h) _ET programming is significantly easier than using any of these older technol $ X2 N( f% W7 q/ S" S- I2 T: nogies. For this reason, I suspect many developers will move away from using + c# u3 h) L1 D1 {& Zthe older technologies. The older technologies can buy you performance howev ' y. I/ u: o7 J5 h
er; so, some people that are very concerned about this will stick with what' ! f1 p* b! D5 l5 j6 C8 c; ~s around. As for COM, developing components with .NET is orders of magnitude 1 w% P* [3 F* K6 e' j7 g
easier and the interoperation between components pretty much happens for fr 4 T4 o: q X8 Tee. Again performance may be an issue for some. And, for the time being COM+ + s" v% z$ W) q; i; w) s services, like transactions, are not being offered directly to .NET code. Y 3 @5 |; x6 S4 C7 |
ou can still access these COM+ services but .NET code must incur an interope : [% L1 D& Z# V# b% C# g0 ?
rability transition, which translates to a performance hit. Z% ?) L# ^9 Z- _& l# P ) S6 J! I, V3 E0 \1 O
( U* i+ G$ P( c# V
Question #9 Why was the templates feature not carried over from C++ to C#? " A Y& p$ s4 K
0 b$ d |$ h6 J4 W9 C
% o/ a! |0 P6 _8 Z' n Answer Again, this is more of a runtime issue than a C# issue. First, temp ! Y3 P. `( `+ G4 tlates are difficult to implement and Microsoft choose not to do the work for 2 E! \- N5 X5 D Version 1 of the product. They may do templates or something similar in fut ( K) h7 ?1 s- {/ _6 o
ure versions. Second, since the runtime is a multi-language runtime, introdu " u: u \2 b0 j- @5 ~cing templates means that all languages targeting the runtime would be requi : f+ E! J0 V$ c" \. _% p
red to support templates in some form. There are a lot of issues here that n 6 R2 F- q5 q. w% b9 ~: W! ^5 z8 F& Reed to be carefully considered. % Q' U- ]/ t# o! k, X
$ m8 D/ Q- l1 X7 x- W
1 S, T; N1 ~( w1 i
Question #10 Will C# replace the pseudo keywords that clutter ATL COM code / c& E& D9 g2 j) S& s5 J with real keywords? Examples: OLE_COLOR, BOOL, VARIANT_BOOL, and DISPID_XXX + |6 i$ l" R! z
XXX. & ~9 b4 B( L5 ^
% ^% E! {/ O" g8 D5 K
Answer Absolutely, all types have new names as provided by the .NET class " }- O/ R$ W) k% Z+ F) Jlibrary. 2 R8 |: X! f2 Z' h; m 6 k& I- W% h7 e
$ h( `! [- k) p. A7 b( [+ q9 Q8 v$ _ Question #11 We've seen managed extensions, but aside from that, what futu 5 \, s+ @" q1 J. A/ O& o: B) n
re does C++ have at MS and in .NET? * P* G% ]' {6 z1 T) z ; |% k+ i3 K0 W8 F6 t
Answer C++ is unique in that it is the only Microsoft language that allows " @7 k# u6 ?- d0 u% i3 i, P
the developer to write managed and unmanaged code. So, I can easily see dev ?0 Z6 J7 h% E" H9 f {elopers writing in unmanaged C++ for performance-critical algorithms and the $ ?& g6 b' a/ k6 M% W
n using managed C++ for type-safety and component interoperability. I'm sure : m# Z; \, ]: T1 G( h2 z: q
Microsoft will keep C++ going for years to come: device drivers need it, Wi . Y7 P) A) s) K4 S" P ondows is built with it, SQL Server< Exchange, and other BackOffice products % Y1 R0 j+ V6 V; t. L3 |' B, k
will probably use C++ for a long, long time. 5 |( D& A5 `6 q' O! O$ q* G0 ?7 n: a) P' l
5 F- G+ t$ l. J; ?) k 5 Z7 w7 x0 r. `/ n) o Question #12 If .NET supports ActiveX/COM, how will security be assured if : Z* B% ]5 D, M5 l% x1 w a C# application runs from within a browser? 6 U3 v3 M8 ?) G8 _ B
5 H8 W+ K& N/ K
Answer The .NET runtime offers code access security, which allows an admin * N1 ?: T7 e# ]# b1 K) r% W6 ]: p zistrator/user to configure security based on code identify. By default, any % T- u: h! {% l+ Y3 \, d5 ]% e) `$ E8 C7 S
code downloaded via the Internet or intranet is untrusted and will not be ab & q5 P& _3 o" w
le to access files and other resources. In fact, when I build a console appl $ I7 ~* D5 ]; o7 [' ^+ Q% ^
ication and run it from a network share, I get an exception when it tries to + o' `1 C% t/ J; Y! m, X8 W8 M8 h access certain resources. If I copy the same file to a local disk directory . H: O9 w8 M' J. T0 G' z+ q and run it, it runs fine. Code access security is integrated with the runti 6 h7 v# W1 d' I0 v8 ?me and is too deep a subject to cover here. ) l5 e$ J, U1 y" a$ C
. Q( t/ P: _8 {& i" p % k. H3 O! k( t2 I9 V& r
Question #13 With regards to the .NET runtime, do I need it on the machine e* ^+ h4 y' v' v, O
that I deploy C# apps on? 7 N3 \ N, A; a: W/ C: V$ |* ` ) M( f5 Q- b7 k. m( j
Answer Yes. All managed apps need a manager; the runtime is the manager. M + r, D( @+ o' R' s0 x' d
icrosoft will eventually package the runtime so that it is freely redistribu 1 a; W( A3 Y' t0 ?8 S
ted. For now, end-users will have to install the full .NET SDK from MSDN web 3 t8 e2 c1 R0 E site (when available). This is similar to how VB developer must ship the VB / ]2 \: D7 @1 a: S3 k runtime today. % c+ r& t7 D" ?' }& X# L
! W8 Z4 b; f& f1 g1 Q/ p & [# g9 a4 V8 J4 X2 g
Question #14 There has been mention of being able to derive C# classes fro 5 z; z5 f" _$ @7 V. ?9 t
m VB classes. Is this true and where can we see an example of how to do this $ [5 D! |. ?! f9 |2 H
? % C% c) X5 v6 f. M) }
+ z$ K; K& P0 [8 \: \ Answer This is true. In fact, any language that targets the runtime can de $ }1 j( N0 S) `0 Y. h: Drive from any type created in another language. Also, the Visual Studio debu 3 ^( j! V j7 Y# I: R( Dgger fully supports debugging across languages. Each entry in the call stack 6 E. V! d0 \/ O9 [$ d
window shows the function on the stack and the language that the function w * K. F/ t. f" P; @# Y0 M5 ~% jas written in. This is very cool and got a round of spontaneous applause whe 4 D1 g5 D. }8 q% H7 g
n shown at the PDC. There are samples in the .NET SDK that demonstrate how t 0 N! p% F# c! E$ O s# H0 r
o do this. It's really quite simple. Actually it just happens, there is noth : @4 x n& y+ Z8 F: o5 k4 T
ing for you to do. You can also throw exception across language boundaries a - |7 j2 z* R- ]' r3 Xs well for error handling. 5 L2 q) o( W, R7 v- V0 h g) A; n' x+ t' B# A3 K
! T$ h% e& l& }" d& R" s/ k+ }1 d Question #15 Can I derive a C# class from a C++ class? If so, how? , {# \7 N2 F5 ~* C 5 y& L1 r- {! I! R0 Z Answer Same as the answer above: Any managed language can inherit from a t Y- @7 I R! v, yype in another other managed language. If you use native C++, then you can't ; l) S6 ~. t- Y: C! y% M
do this, however. 7 [) d, M% ^1 u1 f1 U7 \; J
) y* F: C: y' s( K * b9 x. A* z- A. N Question #16 Will the new version of MFC have the option of working in a m + p+ l- c6 c/ [; E) |* |
anaged environment? 3 T% {7 {: M3 v8 l * }) B' I+ U1 h5 b# [! A Answer I haven't been tracking the new version of MFC but I'm pretty sure " J' g6 [- T7 w. N% c& G1 ^' p: Ithe answer is no. MFC is all unmanaged just like it has always been. For man . I4 p8 A v2 |5 ^2 S' naged applications, Win Forms is the window manager that people should use. 3 `2 g7 [, }% e$ }
4 L3 D' q# L* @+ r % i$ e. M* ?$ B0 H x" J, W Question #17 If the new version of MFC will operate in a managed environme : t: n" i! I- |" ]nt, will it have the option of building desktop Win32 apps and not needing . 0 p$ u* z- o7 ]: `$ J3 f$ cNET runtime support? ) l p5 v" b4 q
1 U$ f- F, j# ^ Answer I'm pretty sure MFC is unmanaged and will never require the runtime ' ~$ ^$ N8 a2 y8 [% ^ ], I& x5 \
. # e5 o4 l+ Q M, C+ v 2 H/ K* e0 y/ q 2 o+ ?, O+ C9 [6 w' D W
Question #18 Stroustrup has been quoted as saying "I have not expressed a + c7 S4 g% ~3 _8 u) Htechnical opinion on C#, and I don't plan to do so. C# is yet another propri 2 V% N0 d, n0 G" y V2 f. vetary language specialized for Microsoft's Windows system." Do you agree or } P$ p6 o. l, q* L$ Odo you think C# is more of a generic language open to other platforms? ; c/ p/ j# a% v0 _4 s: \ % A" @4 R3 z0 d1 {. m7 b- T# \ Answer C# is a language designed for the common language runtime; not Wind ( q& C4 Q- W! @# F, U5 }1 e2 Y* @ Fows. The CLR can be ported to other operating system like Linux and Solaris ! z- n& P/ F- E7 k3 |! Y
and if the CLR is there, then C# will probably be there as well. In the gran 0 @& W$ x* r! R2 O% g8 V" x zd scheme of things, C# is not that important or interesting. It is a syntax + A1 m& L9 G3 Cchecker that spits out intermediate language consumable by the runtime. You 1 U, S* u" U: q/ D! w
can love C# or hate C# - your choice. I happen to love it and think is the b 5 u+ |4 K! n2 F# T( I# @
est programming language for the types of applications I write. - I2 |5 I; P2 H9 e: ^2 A
! z2 V, H0 Z& `1 [! P
9 s. r( h6 N, V4 x8 ~& ]' b( u% p( k
Question #19 I heard a rumor that VB7 will allow static linking of the run $ t. [8 i/ H5 q. }, mtime, like MFC. Is there any truth in this? If so, will C# also be able to c % U1 `2 ~" ?4 Create standalone apps? 3 k6 H5 }$ T8 Q6 W5 i6 q4 d5 m! s
) K3 e4 l \: U; G" L; D# f Answer This is absolutely not true. No language will able to statically li / l/ ] E* Y0 G8 h2 i/ e" M2 Nnk to the runtime. + t5 ^1 \" k( L% V2 `! Y/ c- n ) i9 u" a% n, o2 e$ J" j ; q6 h( {$ u% r1 R d: j
Question #20 Does C# still use resource files? If not, what mechanism is p " W0 N0 B, U/ d3 x& Srovided to allow for localization? " A2 q/ P; E9 z( Y* T 0 s, o4 |8 {" H! K# U& ?0 y
Answer The .NET frameworks designers have created a new resource model. Re # M# ~$ \9 E, `
sources can be embedded in EXE or DLL files the way Win32 resources are or r $ I. T+ b" X7 i" }/ i, @
esources files can now be stand-alone files like a single jpg or bmp file. T 1 A/ x9 P& N# Q7 k1 D3 K
here is also the concept of fall-back cultures. If the Swiss German resource * m1 ^5 |$ D1 \" e$ p0 z
can't be found, the runtime looks for the German resource. If the German re + _8 g, x4 e* A/ T f3 N9 B- P/ V
source can't be fond, it looks for the "default" resource. Each language wil 7 _& a3 y- N, X# j0 U2 J- T4 r
l typically be built and shipped as a separate assembly rather than packagin 8 I6 {' O/ x3 v! U: tg everything up into a single file. Like code access security, a full discus 8 H( `+ f7 m+ A+ A' d5 o$ B( tsion of the new resource model is too much to put here. : Z, b. w! b! l0 V( L% N$ t