[숲 산책 #005] 숲의 다양성, 프로그램 언어
숲에는 다양한 생명들이 살고 있습니다. 조그마한 풀들도 있고 허리까지 오는 나무들도 있습니다. 그리고 키가 훌쩍 큰 소나무들도 있습니다. 모든 생명들이 조화를 이뤄가며 숲이라는 네트워크로 연결이 되어 있습니다. 숲이라는 공간에서 모든 구성물들이 유기적으로 돌아가는 것입니다. 숲의 동물과 식물들은 제각각 특징이 있으며 조화를 이루며 아름다운 숲을 이뤄갑니다. 매일 다니면서 느끼는 것이지만 따라다니는 모기 빼고는 숲에는 버릴 것이 없습니다. 모든 구성요소들이 자기 역할을 하며 요란한 교향곡을 만드는 숲의 녹색 콘서트에 흠뻑 취해봅니다. 내 뇌와 내 몸이 초록으로 채색이 되어 창조력과 상상력을 회복하는 곳이 숲입니다.
숲에서는 바람소리로도 힐링이 됩니다. 숲에 부딪히는 바람 소리에도 곡조가 있습니다. 어떤 바람은 슬프게도 들리고, 어떤 바람은 경쾌한 바람 소리도 있습니다. 제가 제일 좋아하는 바람 소리는 자동차 소리도 없이 적막한 가운데 소나무와 부딪히는 솔바람 소리가 좋습니다. 솔바람 소리는 마음을 차분하게 해 주고 일상을 벗어나서 진정한 휴식을 하게 해줍니다. 솔바람 소리는 애잔하면서도 상쾌한 기분을 주어서 모든 생각을 잠시 잊고 멍한 상태로 뇌의 휴식 시간을 갖습니다. 그 시간에는 가장 중요한 것만 떠오릅니다. 그때 떠오르는 생각이 나만의 가장 중요한 가치 있는 것입니다.
숲이 다양한 구성 요소로 채워지듯이 프로그래밍 언어에도 다양한 언어들이 있습니다. 사람과 대화하는 한국어, 영어, 중국어, 일어 등등의 언어가 있듯이 컴퓨터와 대화하는 프로그래밍 언어들이 다양하게 있습니다. 숲과 같이 이런 다양한 언어들이 조화를 이뤄서 코딩을 해나가고 IT SW 숲을 만들어 갑니다.
프로그래밍 언어에 대해서 살펴보겠습니다.
어셈블러
숲을 지탱해주는 흙과 같습니다. 이 언어는 칩셋을 처음에 부팅할 때 디바이스를 초기화해주는 코드입니다. 메모리, LCD 혹은 GPIO 등을 제어하는 언어입니다. 임베디드 시스템에서 많이 사용을 하고 요즘에는 어셈블러까지 보는 경우는 많지는 않습니다. 숲을 유지하는 기반인 흙과 같이 HW와 연결된 기초적인 기능을 구현하는 언어입니다. HW 회로도를 보는 등의 HW 지식이 있어야 하고 SW 지식도 같이 겸비가 되어야 합니다.
C 언어
숲의 구성물로 비유하자면 흙으로 이뤄진 언덕이나 등산로와 같이 기초적인 시스템입니다. 임베디드 시스템에서 많이 사용을 합니다. 우리가 사용하는 안드로이드 폰의 커널 단위 소스들은 모두 C 언어로 되어 있습니다. TI라든지 각종 반도체 시스템 칩셋을 사용할 때에도 대부분 C 언어를 사용합니다. 임베디드 시스템에서 많이 사용하고 세계에서 가장 많이 사용하고 있는 프로그래밍 언어일 것입니다. 모든 프로그래밍 언어의 기초가 되고 있습니다. 이것은 포인터만 이해하고 넘어가면 거의 반절은 이해했다고 볼 수 있습니다. 마찬가지로 HW와 연동되는 부분들이 많기 때문에 HW 지식까지 겸비한 엔지니어라면 훌륭한 엔지니어가 될 수 있습니다. 기술적인 진입장벽이 높아서 쉽게 접근하기가 어렵기 때문에 아직까지 가치가 있는 언어입니다. C 언어는 까다로운 편입니다. C 언어는 수많은 운영체제, 저 수준의 하드웨어, 임베디드 시스템뿐 아니라 게임에도 사용이 되는 언어입니다.
C++
숲의 구성물로 따지자면 흙을 기반으로 나지막하게 자라는 나무와 같습니다. 적당히 화려하게 숲을 구성하는 나무들과 비슷합니다. C언어에 객체 지향이라는 개념이 적용이 되었습니다. 객체 지향성, 클래스, 가상 함수 등과 같은 유용한 기능을 활용하려고 C를 확장한 언어입니다. 요즘 게임 개발에 많이 사용을 합니다. 마이크로소프트사의 MFC는 C++로 구성된 대표적인 강력한 툴입니다. 공용 소스도 많고 UI 부분도 나름 편리하게 구현할 수 있어서 각광을 받았던 프로그램입니다. 그런데 C++ 은 개발의 생산성이 떨어지는 편입니다. 그럼에도 여전히 막강하게 사용하는 프로그래밍 언어입니다. 예전이 소스들이 C++로 되어 있기에 어쩔 수 없이 계속 사용하는 경우도 있습니다.
C#
숲으로 비유하자면 자작나무와 같습니다. 무럭무럭 자라서 숲을 아름답게 채우고 품격이 있는 자작나무와 비슷합니다. 정말 생산성이 좋은 프로그램입니다. 서버와 연동하는 프로그램이나 PC 용 프로그램을 만드는데 정말로 막강해서 계속 성장을 할 것입니다. C# 은 자바와 비슷해서 자바 언어를 잘 안다면 금방 익힐 수 있습니다. 인생의 시간도 짧은데 생산성 좋은 프로그래밍 언어를 선택해서 개발하고 남는 시간은 자기 계발이나 창조적인 시간을 가져야 합니다.
자바
숲으로 비유하자면 소나무와 같습니다. 모든 산마다 흔하게 많이 있지만 숲을 구성하는 소중한 나무입니다. 지구 상에 아마 이 언어를 사용하는 개발자가 가장 많을 것이라고 생각합니다. 대표적으로 우리가 사용하는 안드로이드 폰의 FrameWork 부분은 자바로 되어 있습니다. 우리가 사용하는 안드로이드 앱들도 다 자바로 개발을 합니다. 이 언어는 비전공자도 금방 익힐 수 있습니다. 정말 쉽습니다.
Kotlin
자바와 더불어서 Google의 안드로이드 폰의 앱 개발 시 사용하는 프로그램입니다.
기타 언어
파이썬, 루비, 자바 스크립트, 펄, PHP , 오브젝트 C, 스위프트, Go, 얼렁, 하스켈 등이 있습니다.
버그
이것은 숲의 모기와 같습니다. 프로그램 언어는 아니지만 코딩 오류로 인해 발생하는 문제점입니다.
우리가 대화하는 언어에도 다양한 나라의 언어들이 있지만, 그것을 모두 다 배울 필요는 없습니다. 그러기엔 인생이 너무 짧습니다. 마찬가지로 컴퓨터와 대화하는 프로그래밍 언어도 목적에 맞게 잘 선택을 해야 합니다. 프로그램을 처음 시작하는 개발자는 자바를 먼저 익힌 후 다른 언어들을 배우는 것이 좋다고 생각합니다. 책으로 공부하는 것은 지양하고 동영상으로 공부를 하면 더 쉽게 배울 수 있습니다.
이런 모든 프로그래밍 언어들로 코딩을 하고 개발해서 IT SW 숲을 이뤄나갑니다.