| |
|
|
|
[공지1] 영문 블로그를 옮겼습니다. 주소는 http://codeguru.textcube.com 입니다. 새로운 내용을 올리진 않고, 당분간 이곳에 올린 내용들을 영어로 옮기는 작업을 할 것 같습니다. 제 영문 블로그도 많이 응원해 주세요~
[공지2] 최근 네이버에서 공개한 나눔고딕 글꼴을 적용했습니다. 나눔고딕이 없으신 분은 맑은 고딕, 윤디자인고딕, AppleGothic 순으로 적용됩니다. 나눔고딕이 없으신 분은 여기에서 다운 받으시면 됩니다
[공지3] 제 글을 복사하고 싶으신 분이나 저작권 정보를 알고 싶으신 분은 이 글을 읽어 보세요
[공지4] 각종 Open Source License 번역 시작
|
|
|
|
방준영님께서 C++와 C#간의 차이점 정리에 덧붙여 글에서 몇 가지 잘못된 부분을 지적해 주셔서 Update 했습니다.
- C++과 C#의 차이점 #1: 선행처리기의 지시어로 #include가 없습니다. Java import와 비슷하게 using 이라는 키워드를 써서 library 에 있는 class 들을 쓸 수 있습니다. 나름대로 그 역할에 충실했던 선행처리기는 자신의 문제점과 함께 갈수록 기능이 줄어 드는 것 같습니다. 그렇지만 C#에서는 Java와 달리 conditional compiler을 위한 지시어들은 계속 지원하는 것 같습니다. 방준영님의 글에 따르면 "C++와의 차이점이라면 선행처리기가 컴파일러 안에 통합되어 있다는 것"이 라네요. (Java C# CSharp cpp 프로그래밍언어 비교 선행처리기)2008-07-08 23:18:16
- C++와 C#의 차이점 #2: Java Byte Code와 비슷하게 IL(Intermediate Language)라는 중간 코드가 있습니다. IL은 Java Byte Code와는 다르게 여러 프로그래밍 언어를 지원하네요. VB, C#, C++ 등. 홍민희님이 그러시는데, JScript.NET, Boo, F# 등이 있다고 하네요(프로그래밍언어 C# C++ Java 비교 중간언어 cpp CSharp)2008-07-08 23:23:07
- C++와 C#의 차이점 #3: Application을 의미하는 클래스가 꼭 있어야 합니다. 프로그램 진입점이 ApplicationClass.Main() 이네요. Java는 ApplicationClss.main() 인데… 마치 대학교때 친구 숙제 베껴서 낼 때 변수 이름만 바꾼 듯한 느낌이 드는 것은 저만의 느낌일까요 ? (프로그래밍언어 C# C++ Java 비교 cpp CSharp 프로그램진입점)2008-07-08 23:26:33
- C++와 C#의 차이점 #4: Array가 단순 메모리 공간이 아닌 부가정보를 가진 객체입니다. 즉, 간단한 예로, array.Length 이런게 먹힌다는 거죠. Java 랑 정말 비슷합니다. 물론 (프로그래밍언어 C# C++ Java 비교 cpp CSharp array)2008-07-08 23:30:26
- C++와 C#의 차이점 #6: sbyte, short, int, long, 등 기본 데이터 타입의 크기가 표준화되어 있습니다. 이건 참 맘에 든다. C++도 이렇게 표준화 됐었으면 좋으련만. (프로그래밍언어 C# C++ Java 비교 cpp CSharp 기본데이터타입)2008-07-08 23:44:01
- C++와 C#의 차이점 #7: 상속 계층의 꼭대기에 언어 수준의 object(Java 에서는 Object) 라는 class가 있습니다. 방준영님의 글에 따르면 "엄밀히 구분하면 object는 C#의 키워드고 실제 클래스명은 자바와 같이 Object다"라고 하네요. 각종 언어 수준의 작업을 일관된 인터페이스로 해주는 녀석이겠죠. 이것도 type system에 구멍이 생길 수 있어서 논란의 여지가 있습니다. 저에게는 (프로그래밍언어 C# C++ Java 비교 cpp CSharp 상속계층꼭대기기본클래스 object)2008-07-08 23:55:55
- C++와 C#의 차이점 #8: 문자열 리터럴이 char * 가 아니라 언어 수준의 utf-16(Java 에서 String 은 utf-8 이던가요 ? 방준영님의 글에 따르면 "자바도 C#과 마찬가지로 String 타입이 UTF-16이다"라고 하네요.) 유니코드 문자열 클래스인 string의 인스턴스이다. “hello” 라고 하면 내부적으로 적어도 10 bytes 가 할당되겠네. 메모리가 싼 요즘엔 별 이슈는 안되겠다.(프로그래밍언어 C# C++ Java 비교 cpp CSharp 문자열리터럴 string)2008-07-09 00:04:57
- C++와 C#의 차이점 #9: C++와 달리 pointer 사용에 제약이 있는 것 같다(이건 정확한 게 아니라서 나중에 더 확인하고 정리해 보겠습니다). 큰 장점이자 단점이 될 수 있겠지. 그런데 이제 단점으로 작용하는 영역이 별로 클 것 같진 않다. OS나 Device Driver 에서나 쓰기 어렵지 다른 곳에서 웬만하면 쓰일 수 있을테니까. 방준영님의 글에 따르면 "C#에도 포인터가 있다. C#으로 만든 OS도 있다"고 하네요.(프로그래밍언어 C# C++ Java 비교 cpp CSharp pointer 포인터)2008-07-09 00:10:38
- C++와 C#의 차이점 #10: C++의 struct 는 또다른 class 이지만 C#의 struct 는 힙에 할당할 수도 없고, 상속 관계를 쓸 수도 없습니다. 무조건 object 에서 직빵으로 상속받는군요. 그리고 default accessibility 는 private 이네요(C++에서는 public 이죠)(프로그래밍언어 C# C++ Java 비교 cpp CSharp struct)2008-07-09 00:30:56
- 요.
- C++와 C#의 차이점 #11: C#의 class 는 단일 상속만 허용됩니다. 그리고, 멤버 변수 및 멤버 함수 외에 속성, 인덱서, 이벤트 등의 멤버가 있고, access 도 internal, protected internal 이 있습니다. (프로그래밍언어 C# C++ Java 비교 cpp CSharp 클래스 class)2008-07-09 00:46:52
- C++와 C#의 차이점 #12: C#에서 함수 매개 변수 선언시에는 값 매개 변수 외에 참조 매개 변수(ref 키워드 사용), 출력 매개 변수(out 키워드 사용)를 지정할 수 있습니다.(프로그래밍언어 C# C++ Java 비교 cpp CSharp 매개변수)2008-07-09 00:51:28
- C++와 C#의 차이점 #13: 초기화되지 않은 지역 변수를 사용하려고 하면 컴파일러 에러(경고가 아니라!!!)가 발생한다.(프로그래밍언어 C# C++ Java 비교 cpp CSharp 지역변수 초기화)2008-07-09 00:59:27
- C++와 C#의 차이점 #14: 가상 함수와 순수 가상 함수를 나타내는 키워드를 분리했습니다. 가상 함수는 virtual, 순수 가상 함수는 abstract! subtype 이 override 할 때는 override 라는 키워드를 써야 합니다. 방준영님의 글에 따르면 "인터페이스가 있는데도 굳이 순수 가상 함수를 둔 이유는 일부 함수는 상위 클래스에서 미리 구현하고 일부 함수는 하위 클래스에
구현을 맡기는 형태의 디자인이 가능하기 때문. 반대로 정말 순수하게 순수 가상 함수로만 이루어진 클래스를 만든다면 인터페이스를
쓰는 쪽이 훨씬 깔끔하다"라고 하네요.(프로그래밍언어 C# C++ Java 비교 cpp CSharp 가상함수)2008-07-09 01:10:33
- C++와 C#의 차이점 #15: 형식 매개 변수의 형태로 template과 같은 기능을 제공합니다. C#용어로는 지네릭이라고 합니다. C++처럼 강력한 generic programming 이 가능한지는 모르겠지만. 그리고, template이란 키워드를 사용하지 않고 <> 안에 형식 매개변수만 나열하면 됩니다(프로그래밍언어 C# C++ Java 비교 cpp CSharp template)2008-07-09 01:15:30
- C++와 C#의 차이점 #16: 클래스의 event 멤버는 signal/slot 기능을 언어 수준에서 제공해주는 것입니다. event는 delegate와 연결됩니다. Boost.Signal library 처럼 type safe signal/slot 기능을 제공해 줍니다. (프로그래밍언어 C# C++ Java 비교 cpp CSharp class event member delegate)2008-07-09 01:26:13
- C++와 C#의 차이점 #17: C++의 RAII idiom은 using 문으로 구현할 수 있습니다. using (resource 초기화) { // 실행 코드 } 이런식으로 작성하시면 됩니다.(프로그래밍언어 C# C++ Java 비교 cpp CSharp using구문 코드 블록)2008-07-09 01:32:35
- C++와 C#의 차이점 #18: loop construct 로 foreach도 있습니다. int[] ia = {1,2,3}; foreach (int e in ia) { … } 이런게 가능합니다. c++0x 에서도 비슷한 기능을 도입하려고 하고 있죠(프로그래밍언어 C# C++ Java 비교 cpp CSharp foreach)2008-07-09 01:35:42
- C++와 C#의 차이점 #19: scope operator 가 '::' 이 아니라 '.' 입니다. 전 이게 더 좋은 것 같아요. 어떤 경우는 :: 을 쓰고 어떤 경우는 . 을 쓰고 그랬는데, 이렇게 하나로 통일하는 게 좋은 것 같네요(프로그래밍언어 C# C++ Java 비교 cpp CSharp scope operator)2008-07-09 01:38:54
이 글은 김윤수님의 2008년 7월 8일의 미투데이 내용입니다.
그나 저나 몇 가지 질문이 있습니다. 제가 아직도 C#에 대해 다 파악하질 못해서요. 혹시 알고 계신 분은 댓글 부탁드립니다. ^^ 1. C#의 포인터는 C++보다는 제약이 많은 것 같습니다. 구체적으로 어떤 제약이 있나요 ? user-defined class를 가리킬 수 있나요 ? 2. C++처럼 강력한 generic programming이 가능하려면 container(자료 구조)와 algorithm을 분리할 수 있어야 할 것 같습니다. C# 지네릭도 function template과 비슷한 기능을 제공하나요 ? 비슷한 기능을 제공하지 않는다면 흉내낼 수 있는 방법이 있을까요 ?
제 글이 유익하셨다면 오른쪽 버튼을 눌러 제 블로그를 구독하세요. ->  블로그를 구독하는 방법을 잘 모르시는 분은 2. RSS 활용을 클릭하세요. RSS에 대해 잘 모르시는 분은 1. RSS란 무엇인가를 클릭하세요.
제 글이 유익하셨다면 오른쪽 버튼을 눌러 제 블로그를 구독하세요. ->  블로그를 구독하는 방법을 잘 모르시는 분은 2. RSS 활용을 클릭하세요. RSS에 대해 잘 모르시는 분은 1. RSS란 무엇인가를 클릭하세요.
마지막으로 제 글이 유익하셨다면 과감하게 추천 버튼 한방 부탁드립니다 ^^
|
| Tag : array,
c,
Class,
cpp,
CSharp,
Delegate,
event,
foreach,
java,
member,
object,
operator,
Pointer,
scope,
String,
struct,
Template,
using구문,
가상함수,
기본데이터타입,
매개변수,
문자열리터럴,
블록,
비교,
상속계층꼭대기기본클래스,
선행처리기,
설계철학,
중간언어,
지역변수,
초기화,
코드,
클래스,
포인터,
프로그래밍언어,
프로그램진입점 |
|
|
Track this back : http://yesarang.tistory.com/trackback/255
|
|
|
|
|
|
| 이상계는 이쪽에 속해있지 않고 저쪽에 속해 있다. 이쪽에 사는 우리는 이쪽에 머무르지 않고 저쪽을 꿈꾸며 살아야 한다. 여기 오는 모든이들이 저쪽의 충만함을 이쪽에서의 매일의 삶에 경험할 수 있기를...
E-mail: (yesarang) at (yahoo.co.kr) |
|
|
«
2009/07
»
| 일 |
월 |
화 |
수 |
목 |
금 |
토 |
| |
|
|
1 |
2 |
3 |
4 |
| 5 |
6 |
7 |
8 |
9 |
10 |
11 |
| 12 |
13 |
14 |
15 |
16 |
17 |
18 |
| 19 |
20 |
21 |
22 |
23 |
24 |
25 |
| 26 |
27 |
28 |
29 |
30 |
31 |
|
|
Total : 383,568
Today : 14
Yesterday : 29 |
|
|
 |
 |
 |
|