프로그래밍 언어는 프로그램을 작성하는 도구다. 어떤 문제를 어떤 환경에서 해결해야 하는가에 따라 개발자들이 프로그래밍 언어에 원하는 바가 달라진다. 특히 최근에는 서버와 데스크탑 뿐 아니라 모바일과 임베디드, 엣지 등 급격하게 컴퓨팅 환경이 다양화되면서 각 환경마다 적합한 언어가 있고 또한 여러 시스템 사이에 연결해주는 역할도 매우 중요하다. 환경에 따라 프로그램이 해주어야 하는 역할이 달라지고 그에 따라 선택되는 언어도 달라진다. 거대한 규모의 시스템을 구축하고 성능이 어느 정도 나와야 하는 환경이라면 C나 자바 같은 전통적인 언어가 더 바람직할 것이다. 모바일 환경에서는 그에 적합한 Kotlin이나 Swift 같은 언어를 사용해야 한다. 웹 환경에서는 PHP나 자바스크립트 같은 언어가 다른 선택의 여..
JIT 라는 용어가 요즘 나름 핫하게 떠오르고 있다. 이런 컴파일러에 관련된 기술이 새삼 주목받는 이유는 결국 실행 속도다. 자바스크립트가 빨리 돌아야 우리가 쓰는 인터넷 환경이 더 편리해 지고 웹 상의 온갖 서비스의 성능도 올라가고 IoT 세상에서 엣지가 해줘야 할 일들도 빨라진다. 그럼 JIT는 무엇일가? Just In Time 컴파일러의 준 말인데, Just In Time이란 실행하는 시점까지 미루었다가 컴파일한다는 의미다. 이것이 어떨 때 필요할까를 이해하기 위해 자바와 C의 실행에 대해 이전의 포스트에서 다루었던 내용을 다시 돌이켜 보자.자바 언어는 바이트코드라고 하는 특수한 형태의 어셈블리 코드로 컴파일된다고 했다. 이것은 타겟 머신(CPU와 운영체제)에 상관없이 이식성을 가져야 하는 자바 언..
프로그래밍언어론 수업을 하면 첫주의 주제가 "프로그램은 어떻게 실행될까"라는 것이다. 보통 시스템소프트웨어 또는 시스템프로그래밍 과목에서 다루어지는 내용이다. 기본적이고 약간은 진부한 주제지만 C나 자바 코드를 짜서 컴파일하고 돌리는 개발 과정과 작성된 프로그램이 실행되는 과정을 잘 이해하는 것은 좋은 소프트웨어개발자가 되기 위해 매우 중요하다. 이 글에서는 가능한 한 쉽게 간략히 그 과정을 한번 따라가 보려고 한다. 재미없지만 중요한... 그런 내용이다. 먼저 컴파일 방식의 실행에 대해 살펴보고 인터프리터 방식의 실행에 대해서는 하단에서 따로 설명한다. 먼저 소스 프로그램을 작성하고 컴파일하는 과정이 필요하다. 편집기를 이용해서 언어의 구문에 맞게 작성하면 컴파일러가 그것을 실행할 수 있는 프로그램으로..
프로그래밍언어론 카테고리를 새로 만든 기념으로 가상함수 포스팅에서 잠깐 다루었던 동적바인딩에 대해 좀더 자세하게 정리를 해 보려고 한다. 사실 정적바인딩과 동적바인딩은 프로그래밍언어론 과목의 가장 중요한(그리고 어려운) 주제 중 하나다. 언어의 개념과 구현을 아우를 수 있는 주제라서 개인적으로 좋아하는 주제이기도 하다.먼저 바인딩이 무엇인지 정의해 보자. 바인딩은 사전적 의미로는 무언가 두 가지가 결합되는 것을 의미하기도 하고 미정(undefined, undetermined) 상태의 어떤 것이 정의 또는 결정되는 것을 얘기하기도 한다. 프로그래밍언어론에서는 이 여러 가지 의미를 다 사용하고 있지만 일단은 뒤의 개념처럼 컴파일과 실행 과정에서 어떤 것이 결정되는 것을 바인딩이라고 할 수 있다. 좀더 넓은 ..
- Total
- Today
- Yesterday
- CompareTo
- format
- follow
- typedef
- ToString
- python exercise
- Lazy evaluation
- max
- 스트링 +
- contentEquals
- indexof
- rust
- 동적바인딩
- zip
- 스트링
- 콜렉션
- C++ 클래스
- Iterator
- python example
- 자바regex
- APPEND
- 패턴
- 지연계산
- TypeError
- sort key
- Camel Style
- 이터러블
- contains
- comparable
- 이터레이터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |