Differences between revisions 11 and 12
Revision 11 as of 2011-08-03 11:00:58
Size: 6676
Editor: localhost
Comment: converted to 1.6 markup
Revision 12 as of 2011-08-18 14:09:07
Size: 6746
Editor: 211
Comment:
Deletions are marked like this. Additions are marked like this.
Line 59: Line 59:
 * [Assembler]
 * [Cee]
 * CeePlusPlus
 * [Java]
 * [Fortran]
 * [[Assembler]]
 * [[Cee]]
 * [[CeePlusPlus]]
 * [[Java]]
 * [[Fortran]]
Line 66: Line 66:
 * [Python] / [Jython]
 * [Perl]
 * [Lisp]
 * [Smalltalk]
 * [Eiffel]
 * [PHP]
 * [[Python]] / [[Jython]]
 * [[Perl]]
 * [[Lisp]]
 * [[Smalltalk]]
 * [[Eiffel]]
 * [[PHP]]
Line 75: Line 75:
 * [Mathematica]  * [[Mathematica]]
Line 77: Line 77:
 * [R]  * [[R]]
Line 79: Line 79:
 * [[J]]
Line 82: Line 83:
 * ProcedualProgramming : [Cee], [Perl]
 * ObjectOrientedProgramming : CeePlusPlus, [Java], [Smalltalk], [Python]
 * FunctionalProgramming : [Lisp], [Python]. [Haskell]
 * ValueOrientedProgramming : [nML], [Haskell]
 * ProcedualProgramming : [[Cee]], [[Perl]]
 * ObjectOrientedProgramming : CeePlusPlus, [[Java]], [[Smalltalk]], [[Python]]
 * FunctionalProgramming : [[Lisp]], [[Python]], [[Haskell]]
 * ValueOrientedProgramming : [[nML]], [[Haskell]]
Line 96: Line 97:
[Assembler]를 어따가 넣어야하나
 ''[Assembler]도 컴파일을 해야되니 1수준에 넣어야 될듯 한데요. '' --[destine]
[[Assembler]]를 어따가 넣어야하나
 ''[[Assembler]]도 컴파일을 해야되니 1수준에 넣어야 될듯 한데요. '' --[[destine]]
Line 102: Line 103:
수준별 분류가 어떻게 분류된 건지 설명 해주세요. [destine], 2003-05-14
  ''아마 Capers Jones의 FP estimation 테크닉에 의한 backfiring 구분(Average Source Statements Per Function Point)이 아닌가 합니다. --[김창준]''
수준별 분류가 어떻게 분류된 건지 설명 해주세요. [[destine]], 2003-05-14
  ''아마 Capers Jones의 FP estimation 테크닉에 의한 backfiring 구분(Average Source Statements Per Function Point)이 아닌가 합니다. --[[김창준]]''

ProgrammingLanguage와 일반 language는 매우 유사하다. 마치 외국어를 공부하는 것과 같고, 역시 많이 사용해보는것이 공부하는데 도움이 된다.

http://www.webopedia.com/FIG/PROG-LAN.gif

Programming language

ProgrammingLanguage 의 종류

Generation

  • first generation: MachineLanguage

  • second generation: AssemblyLanguage

  • third generation: high-level programming languages, such as C, C++, and Java.
  • fourth generation: fourth-generation languages are programming languages closer to human languages than typical high-level programming languages. Most 4GLs are used to access databases.

MachineLanguage

  • ProgrammingLanguage의 가장 하위 단계이며 모든 CPU 마다 그들만의 유일한 MachineLanguage가 존재한다. 즉 MachineLanguage는 CPU에 명령을 내릴 수 있는 상태의 ProgrammingLanguage이다.

AssemblyLanguage

Code 가 동작하기 위한 두가지 방법

Compile과 Interpret의 장단점

  • 일반적으로 Compile 하는 방법은 실행 속도가 Interpret 하는 방식보다 빠릅니다.
  • Interpret 방식은 실행시 Compile하는데 걸리는 시간이 없고, 실행중에 프로그램을 수정할 수 있습니다. 그렇기 때문에 개발 버젼에서는 Interpret 방식을 사용하는 언어를 쓰기도 한다고 합니다. BASIC 이나 LISP 가 이런 방식을 사용합니다.
  • Compile 방식을 사용하면 특정 processor에 대해 특정한 MachineLanguage가 존재하기 때문에 다른 processor를 사용할 경우 새로 Compile 해야 되지만 Interpret 방식을 사용할 때는 그럴 필요가 없습니다.

Java와 .Net 프로그램

  • Java와 .Net Framework에서 돌아가는 프로그램은 특정 플렛폼에 상관없이 돌아갑니다. 그 이유는 다음과 같습니다.
  • Java는 Compile 하면 bytecode(확장자가 .class 입니다)라고 불리는 형식의 파일로 변환됩니다. 그리고 실제 프로그램은 Java Virtual Machine이라는 Java Interpreter가 Runtime 때 실행을 시켜줍니다. 따라서 Java VM이 여러 Platform에 맞게 설치만 되어 있으면 실행되는 것입니다. 참고로 bytecode도 just-in-time compiler (JIT)를 사용하면 바로 MachineLanguage로 컴파일 되어서 이용됩니다.

  • .Net 프로그램은 Compile 하면 MicroSoft Intermediate Language (MSIL) 형식의 파일로 변환됩니다. 그리고 이 파일이 Common Language Runtime (CLR) 또는 Virtual Execution System (VES) 이라고 불리는 VM에 의해서 실행됩니다. Java와는 달리 이 VM은 Interpret하지 않고 JIT를 이용해서 MachineLanguage를 만들고 그 코드를 실행합니다.

  • 여튼 둘다 중간 코드로 변환하는 과정을 거치기 때문에 실행파일을 배포해도 어떤 플렛폼에서든 실행될 수 있는 장점을 갖고 있습니다. 하지만 이와 같은 점 때문에 decompiler를 사용해서 원래 소스를 볼 수 있는 취약점을 갖고 있습니다.

References

수준별분류

제 1수준 (컴파일랭귀지)

제 2수준 (스크립트)

제 3수준

방법별분류

각종자료

토론

보통 새로운 언어를 배울때 HelloWorld부터 시작한다.

Assembler를 어따가 넣어야하나

  • Assembler도 컴파일을 해야되니 1수준에 넣어야 될듯 한데요. --destine

    • OK~

참고, ProgrammingLanguages

수준별 분류가 어떻게 분류된 건지 설명 해주세요. destine, 2003-05-14

  • 아마 Capers Jones의 FP estimation 테크닉에 의한 backfiring 구분(Average Source Statements Per Function Point)이 아닌가 합니다. --김창준


CategoryLanguage

ProgrammingLanguage (last edited 2012-08-14 14:51:14 by 182)

web biohackers.net