또다시 변화의 시기인가보다
최근 주목받고 있는 새로운 프로그래밍 언어들이 늘어나고 있고
근 10년이상 시장에서 주도권을 가지고 있던 프로그래밍 언어들이 지배력이 많이 떨어지고 있음이 느껴진다.
여러가지 면에서
가상머신 기반의 프로그래밍 언어들이 주류를 이루고 있긴 하지만
웹과 모바일 환경에 어떻게 적응하느냐가 살아남는 관건이 될 것 같다.
처음 프로그래밍을 배웠던 시기도 이처럼 변화의 시절이었다고 느껴진다.
포트란과 코볼이 사라지고 C를 기본으로 하면서 C++, Pascal, Java 같은 객체지향 프로그래밍 기법이
도입되면서 프로그래밍 언어별 장단점에 대해 많은 논의가 진행되었던 것으로 기억된다.
최근에는 주종목의 프로그래밍 언어외에도
2~3가지 프로그래밍 스킬을 가지는 것은 당연한 것처럼 느껴지고 있다.
사실 주종목이 따로 있어야 하는 지도 애매한 상황인것 같지만
뭔가 하나를 깊이 알고 있다는 것은 다른 것으로 파생되어 나갈때 중요한 기준점이 되어
이해의 폭을 넓여주게 된다.
일상에서 접하는 한국어, 영어와 같은 말도 한가지 말에 대한 깊이와 이해가 다른 외국어를 이해하는데
많은 도움이 된다는 연구들이 있는 것처럼
프로그래밍 언어도 자신이 익숙한 언어와 필요에 따라 사용하는 언어들이 존재한다.
웹과 관련한 개발을 진행하면서 굳이 C언어가 익숙하다고 C언어를 고집하는 것은 아주 특수한 경우가 아니라면
웹에 대한 이해가 없는 아둔한 것이라고 밖에 이해될 수 없다.
어찌되었든 다양한 플랫폼이 일상화된 현재의 개발환경에서 여러가지 프로그래밍 언어를 배우는 것은
일상화된 일이 되어버렸다.
이글을 쓰고 있는 나 자신만 해도
처음 접했던 베이직을 시작으로 포트란, 파스칼, 씨, 다시 베이직, C#, Java, Python 까지
연습용이 아닌 프로그램을 완성했던 것을 기준으로 해도 7~8가지의 언어를 접하고 배워왔으며
지금도 새로운 프로그래밍 언어를 익히고 있다.
(최근 관심은 구글의 Go인데 아직 Hello World 밖에 못 찍어 봤다 ㅋ~)
프로그래밍언어를 배우고 때론 가르치면서
새로운 프로그래밍 언어를 배울때 참고할 사항을 몇가지 적어두려고 한다.
=====
1. 자료형과 연산자
프로그래밍 언어는 연산을 목적으로 탄생 했다는 점을 기억하면 이해하는데 도움이 된다.
1-1. 즉, 연산자와 피연산자 또는 매개체(변수)로 이루어지는 것이 기본 구조이다.
1-2. 때문에 대부분의 프로그래밍 언어 입문서는 Introduction 다음에 피연산자인 자료형 부터 설명한다.
프로그래밍 언어에서 사용하는 자료형은 당연히 컴퓨터 시스템과 운영체제에 종속될 수 밖에 없다.
그런 점에서 기본 자료형은 크게 5가지로 볼 수 있는데
① 정수형(int, integer, long)
② 실수형(float, double)
③ 바이트형(byte, char)
④ 논리형(bool, boolean)
⑤ 문자열(string)
들이다.
여기에 부가적으로 큰 수를 다루기 위한 통화형(currency) 같은 타입을 정의하는 경우도 있다.
논리형은 사실 대부분 정수형을 재정의해 사용하지만,
대부분의 프로그래밍 언어에서 기본 자료형으로 선언되어 있어 기본형으로 분류했다.
1-3. 이런 변수에 대한 자료형을 알고나면 실제 연산을 진행해봐야 하는데 그러기 위해 필요한 것이 연산자다.
연산자는 크게
① 산술연산자 : +, -, *, /, %
② 논리연산자 : and, or, not
③ 비교연산자 : ==, <, >, <=, >=
④ 비트연산자 : shift (<<, >>, 등), xor(^)
정도로 분류된다.
특히, 논리연산자와 비트연산자는 컴퓨터라는 논리회로가 가지는 이진법적 특성을 반영한 것으로
다양한 응용이 가능한 연산자이기도 하다.
1-4. 이러한 연산식의 기본 구조를 알고나면 다른 문법을 가진 프로그래밍 언어라고 하더라도
대부분 유사한 자료형과 연산식을 가지고 있기 때문에 자신이 익힌 언어와 비교하며
새로운 프로그래밍 언어의 특징적인 부분만을 익혀도 큰 문제는 없다.
다만, 가상머신을 기반으로 하는 자바같은 프로그래밍 언어와 운영체제에 종속적인
프로그래밍언어(C 같은)와는 자료형이 표현하는 범위(자료형의 크기)가 다른 경우가 발생하기도 하므로
어렵지는 않지만 해당 프로그래밍 언어의 특성을 잘 이해하고 있어야 하는 부분이다.
2. 분기문과 반복문
3. 자료형 심화과정(배열, 열거형, 리스트)
4. 화일처리
5. 객체지향 기법
6. 데이터베이스 다루기
7. 네트워크 프로그래밍
'Talk' 카테고리의 다른 글
[도서] 기계는 어떻게 생각하는가? (How Smart Machines Think) (0) | 2020.03.16 |
---|---|
국가암호공모전 - 장려상 (0) | 2017.11.22 |
[북리뷰] 웹 모의해킹과 침해대응 (한빛미디어) (0) | 2017.08.15 |
프로그래밍 교육 의무화는 수학보다 중요한가? (0) | 2015.07.30 |
다시 시작한 회사생활 - 퇴사의 조건 (0) | 2014.12.16 |