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