프로그래밍언어

    [프로그래밍언어] 프로그래밍언어의 역사

    Fortran I : 704를 위해 작성하던 코드 중 거의 절반이 Fortran으로 작성되고 있었다. 인기 많았다. 서브루틴을 위한 개별적 컴파일은 불가 Fortran II: 서브루틴들의 독립적인 컴파일 기능. 컴파일과정 상당히 단축해 훨씬 큰 프로그램 개발 가능하게함 실질적인 대규모 프로그래밍이 가능하게 됨 Fortran IV: 서브프로그램 이름이 파라미터가 될 수 있었다. --90이전: 컴파일타임에 변수type과 storage모두 fixed , recursive프로그램(x) Fortran 90: Parameter type checking, CASE문 Fortran 2003: OOP지원 Fortran 2008: 병렬적 프로그래밍-Thread Base(중요) ----------- Fortran은 Inte..

    [프로그래밍언어] Memory Allocation Area(code,data,stack,heap)->Segment

    Memory allocation process 에 따라 RAM은 4가지 area로 구성됩니다. Local variable or stack Free memory or Heap Static and global variables Code Area 지역 변수는 스택에 저장됩니다. code area는 C program insturction에 의해 머신코드로 변환후 저장됩니다. static과 global변수들을 위한 공간도 따로 있습니다. 그리고 free memory area를 heap이라고 합니다. heap의 크기는 프로그램실행중 계속 바뀝니다. Data Data: data(초기화o)와 bss(초기화x)로 이루어져있습니다. 초기화된 데이터는 data에 저장, 초기화되지않은 데이터는 bss에 저장됩니다. 함수 내부..

    [프로그래밍언어] Data Types_Union Types, Pointer and Reference Types, Type Checking, Strong Typing

    Union Types Union은 실행시간의 다른 시간들동안 다른 타입의 값들을 저장할 수 있도록 하는 타입입니다. 단점은 type checking이 dynamic해야한다는 것입니다. union Type{ int i; short int s[2]; char c[4]; }; Free Union은 type checking을 제공하지 않아 unsafe합니다. type checking을 하는 union은 discriminant라는 type 지시자를 가지고있습니다. Java와 C#은 Union을 제공하지 않습니다. Pointer and Reference Types 포인터타입 변수는 메모리주소를 가지고 NULL(nil)이라는 특별한 값을 가집니다. ptr=NULL; 하면 메모리가 해제됩니다. indirect addr..

    [프로그래밍언어] Data Types_Primitive, Character String, Enumeration, Array Types

    variables in Java: -primitive types: boolean, char, byte, int, short,long, float, double..... -non-primitive types: string, arrays, classes Primitive Data Types Decimal -장점: Accuracy , 단점: limited range(지수표현x), wastes memory Boolean -장점: readability, #include Character: stored as numeric codings(scalar), ASCII(8-bit code) or 16-bit coding:Unicode(UCS-2) Character String Types - C와 C++: Not primi..

    [프로그래밍언어] Syntax and Semantics

    Describing Syntax: Terminology Sentence Language: set of sentences Lexeme: syntactic unit(의미적요소)의 최소단위 Token: Lexeme의 카테고리_ 종류: 식별자, 연산자, 수치 리터럴, 특수어 Syntax: (구조, 문법): expressions, statements, and program units 어떻게 표현? Semantics: (의미): expressions, statements, and program units 적합한가? Syntax를 표현하는 방법 CFG(Context-Free Grammar) Chomsky위계의 Class2로 다음과 같은 형식을 따릅니다. A->x A: nonterminal symbol (LHS) x:..

    [프로그래밍언어]Subprograms

    추상화에는 두 가지 종류가 있습니다. Process abstraction Data abstraction(이는 여기서는 다루지 않을 내용입니다.) 우리가 메인함수에서 프로세스를 구성해서 f1(a,b)라는 subprogram을 호출했을 때 f1()이라는 실제 실행 함수는 호출한메인함수 프로세스를 추상화하게 됩니다. 그리고 다시 메인함수에서 f1()을 호출해서 재사용하는 것 또한 추상화입니다. 모든 subprogram은 entry point을 가집니다. subprogram을 호출하는 애를 calling program(caller)라고 하고 subprogram이 실행되는 동안에는 멈춰있습니다. C와 C++에서 함수 정의를 prototype이라고 합니다. caller에서 subprogram을 호출하는 f1(a,b..

    [프로그래밍언어] Names, Bindings, and Scopes

    명령형 언어는 폰노이만 아키텍처의 추상화입니다. 메모리에서 명령어와 데이터를 저장해서 기계메모리셀의 언어에서의 추상화(변수)가 이루어지죠. RAM에서 CPU로 load(fetch), CPU에서 RAM으로 store되는 life cycle을 가집니다. 변수는 이때 특징들을 가집니다. (키워드) scope(범위), lifetime(메모리에 적재되어 소멸까지의 시간), type checking(a=b;에서 a와 b는 상호호환), initialization, and type compatibility. Names 변수를 논의하기 전, 변수의 기본속성 중 하나인 이름을 논의해야합니다. Identifier(식별자)라는 말과 혼용되어 쓰입니다. 1. 설계시 고려해야하는것은, 이름들이 case sensitive한가?(대..

    [Programming Language] Preliminaries

    프로그래밍언어를 배우는 이유 적합한 언어를 고를 수 있는 백그라운드, 생각을 표현할 수 있는 능력 향상, 새로운 언어를 배울 수 있는 능력 등 입니다. 예를 들어 Perl로 배열을 구현해서 C로 똑같이 구현하기, 객체지향 개념을 자바로 배우기, 프로그램 버그 고치는 능력 등입니다. 프로그래밍 영역 과학응용분야 - Fortran 사무응용분야 - COBOL 인공지능분야 - LISP, Python, R 시스템 프로그래밍 - C(Unix가 OS) 웹 소프트웨어 - Javascript, HTML 언어평가기준-Readablility 판독성 유지보수의 용이성(ease of maintenance)는 판독성으로 대부분 결정됩니다. -Overall Simplicity (전반적인 단순성) : 프로그램의 작성자가 그 판독자가..