언어별 비교 암기사항
Chap 6
- 열거형
- c/c++: 타입으로 지원
- Java: class로 지원함
- Python: 모듈로 지원함
- 배열 Subscript binding 분류
- C/C++: Static / Fixed Stack Dynamic / Fixed Heap Dynamic
- java/python: Heap-dyanmic
- 이종 배열
- Perl, Python, JavaScript, Ruby
- 리스트 타입
- Scheme의 리스트 연산
- CAR 리스트의 첫번쨰 원소 반환
- CDR 리스트의 첫번쨰 원소 제거후 나머지 반환
- CONS 두 리스트를 연결함 (첫번째 인자를 두번째 인자에 추가함)
- LIST 각 인자들로 새 리스트 생성
- 파이썬의 List Comprehension
- [x * x for x in range(7) if x % 3 == 0] 과 같이 수식으로 리스트 요소 넣어줌
- 자바의 ArrayList
- 일반 배열과 다르게 크기 동적으로 변경 가능함
- Associative Arrays
- Strong-typed
- static: Java, C# < 함수형 언어 (F#, Haskell 등)
- dynamic: python, ruby
- Weaked-typed
- static: C/C++
- dynamic: JS, PHP, Perl
Chap 7
- APL은 모든 연산자가 동등한 우선순위이고 모두 우결합
- 대입문
- Ada:
:=로 대입
- Conditional Targets: Perl
- Assignment as Expression: C, JS, Perl
- Multiple Assignments: Python, Perl, Ruby, Lua
- Mixed-Mode Assignment
- Fortran, C, C++, Perl:
- Java, C#:
- Widening conversion만 허용 (좁혀지는 변환은 명시적으로)
- Ada:
- 암시적 타입 변환(coercion) 자체를 허용하지 않음
Chap 8
- 제어 표현식
- C, C89, C99, Python, C++: 산술 표현식도 가능
- C90: arithmetic만 지원 ⇒ C++: Boolean 지원 ⇒ C99: Boolean 지원 추가
- 대부분의 언어: Boolean만 허용
- 절 형식 (Clause Form)
- Perl: 반드시 중괄호 (한줄이어도)
- Python, Ruby: 문장 시퀀스 (들여쓰기)
- C계열은 goto 등으로 루프 내부로 진입이 가능함
- Java(Perl)는 labled break와 continue를 통해서 user-located loop control을 제공함
- 어떤 루프를 break할지 continue할지 결정
- 자바는 Iterator 상속을 통해 자료구조 반복 지원
- C#은 IEnumerator 상속을 통해 자료구조 반복 지원