| 프로그래밍 언어와 프레임워크
페이지 정보
작성자 최고관리자 작성일23-06-01 14:40 조회36,227회 댓글0건본문
컴퓨터가 등장한 후 세상은 이전과 다른 엄청난 발전 속도를 이루었습니다.
주거, 산업, 생활 등 현 시대 인간이 접촉하는 모든 곳에서 컴퓨터가 빠지는 곳이 없을 정도로 이제는 우리 생활에서 없어서는 안되는 존재입니다.
최근에는 AI의 발전으로 모든 사업이 전반적으로 빠르게 변화하고 있는데, 이 모든 것을 가능하게 하기 위한것이 프로그래밍 언어입니다.
왜 언어라고 부를까요?
보통 사람과 사람이 의사소통을 할 수 있는 수단을 언어라고 합니다.
한국어, 영어, 일본어, 심지어 몸짓으로 의사소통을 하더라도 바디랭귀지 라고 부르죠.
프로그래밍 언어는 사람과 컴퓨터가 서로 의사소통을 할 수 있도록 만들어진 언어입니다.
물론 프로그래밍 시 세계 만국 공용어인 영어로 타이핑을 하지만 이는 프로그래밍이 시작된 곳이 영어권 국가라서 오늘날까지 영어를 사용하고 있는것이고 실제로는 컴퓨터와 소통하는 것은 영어가 아닙니다.
영어로 작성한 코드(Code) 를 전송(실행) 하면 그 모든 데이터가 약속이 된 형식으로 2진수(0, 1) 로 바뀌어 컴퓨터에 전달됩니다.
그리고 그 명령어를 받은 컴퓨터는 다시 응답을 2진수로 하게 되고 그 2진수를 사람이 알아볼 수 있는 형태인 영어로 바뀌게 됩니다.
이렇게 작성한 영어를 컴퓨터와 소통할 수 있게 2진수로 바꾸고 다시 영어로 바꾸는 역할을 하는것이 프로그래밍 언어입니다.
프로그래밍 언어의 시작
컴퓨터는 2진수밖에 알아보지 못합니다. 하지만 2진수로 모든 프로그래밍을 할 수는 없습니다.
그래서 처음 컴퓨터가 등장 햇을때는 간단하게 2진수를 전달 할 수 있는 방식을 고안하고 사용했지만 이는 언어라고 부를 수준은 아니었고 난이도도 매우 높았습니다.
1948년 처음 프로그래밍 언어라고 말 할 수 있는 어셈블리 언어(Assembly) 가 등장합니다.
프로그래머는 텍스트 편집기(오늘날의 개발 툴)에 어셈블리어를 작성한 후 컴퓨터에 전달하게 되는데 이때 컴퓨터가 텍스트 편집기를 직접 읽을 수 없으니 어셈블러 라는 보조프로그램을 사용하여 기계어(2진수)로 변환하여 전송하게 됩니다.
그러면 컴퓨터는 기계어를 인식하고 사전에 약속되어 있는 틀에 맞게 행동을 하게 되는 것입니다.
어셈블리 언어는 1세대 언어로서 현재 사용중인 언어들과 비교해 보면 굉장히 어렵고 난해하며 간단한 명령을 하는데도 코드가 길어질 수 밖에 없는 구조입니다.
하지만 아직까지도 가끔 사용되는 언어이며(필요 시) 지금 존재하는 모든 언어들의 시초라고 할 수 있습니다.
하지만 당시에는 컴퓨터가 대중화 되지도 않고 특수한 목적으로만 사용되었기 때문에 프로그래머들은 더욱 쉽고 간결한 언어를 개발하게 됩니다.
2세대 언어의 등장
포트란(Fomula Translation - Fortran) / 코볼(Common Business Oriented Language - CBOL) 등과 같은 2세대 언어가 개발 된 후 컴파일러 라는 개념이 자리 잡게 됩니다.
컴파일러란 인간이 사용하는 언어와 가장 가까운 언어로 코드를 작성하고 이를 기계어로 변환하는 목적을 가진 프로그램이며 이로 인해 익숙한 언어로 컴퓨터와 의사소통을 할 수 있다는 장점 덕분에 프로그래밍의 난이도가 대폭 하락하게 됩니다.
하지만 역시 이런 언어들도 역시 아직까지 어려우며 코드의 길이에 비해 명령을 할 수 있는 범위는 제한되어 있어 한계가 명확햇습니다.
이때 파스칼 언어, C 언어가 등장하게 됩니다.
파스칼과 C는 개발된 당시에는 큰 주목을 받지 못하였지만 대학 등 교육 목적으로 많이 사용하면서 점차 유명해지기 시작하였습니다.
교육 목적으로 사용된 이유는 이전 프로그래밍 언어와 비교하여 구조적으로 확실한 목적을 가진 후 코드를 작성하는 것이 유리하기 때문이며 이는 현대 프로그래밍 언어 구조와 상당히 흡사합니다.
파스칼의 장점은 형식 지정이며 이는 이전 언어가 기계어 변환 이후 실행 과정에서 컴퓨터가 알아 듣지 못하는(오타나 수식 오류 등) 명령을 받기 전 컴파일 단계(기계어로 변환하는 과정)에서 이런 오류들을 검수하게 되어 코드 작성 시 어느 부분이 잘못되었는지 파악하는 것이 용이해졌으며 난이도가 수직 하락하게 됩니다.
그리고 같은 시기에 개발된 C 언어는 이전에 개발되었던 B 라는 언어를 모티브로 만들어져 C 라는 이름이 붙게 되었고(그래서 어셈블리를 A 언어로 부르기도 한다) 운영체제와의 호환성이 좋아 애플리케이션 프로그래밍 등에도 사용 가능한 범용 프로그래밍 언어로 사랑을 받게 되었습니다.
객체지향 / 함수지향
현재 사장된 파스칼 언어와 다르게 C언어는 많은 분야의 프로그래밍이 가능하여 아직까지도 많은 사랑을 받고 있습니다.
그리고 C 언어가 등장할 당시 프로그래머들은 C언어의 장점과 파스칼 언어의 장점을 모두 합친 언어를 개발하길 원햇고 C를 기반으로 수많은 언어가 쏟아져 나오게 됩니다.
VB(Visual Basic), C++, C#, 자바(JAVA), 오브젝트-C 등 지금도 널리 쓰이고 있는 언어들이 등장했으며 객체지향과 함수지향이라는 개념이 등장하게 되었습니다.
마이크로소프트 사에서 개발한 VB 언어는 함수지향이라는 개념을 사용하였으며 하나의 기능을 실행하는 코드를 함수라는 개념으로 묶어 이를 공통적으로 사용할 수 있게 설계 되었습니다.
그리고 VB는 기존 컴파일러가 아닌 보다 간결하고 쉬운 자체개발 인터프리터를 사용했습니다.
이와 반대로 C++ 언어는 객체지향이라는 개념을 선보였으며 코드를 객체(Object)화 하여 상속과 참조 라는 개념으로 접근할 수 있도록 만들었습니다.
하지만 C++은 오히려 C 언어보다 더욱 어려웟으며 무척이나 엄격하여 제대로 다룰 수 있는 프로그래머가 많이 있지 않았고 VB의 함수지향은 안정성이 높고 접근이 쉬웠지만 한계가 명확하였습니다.
이후 자바라는 언어가 등장하게 되고 자바는 객체지향을 따르면서 기존 언어들의 단점을 최소화 하고 장점을 극대화 하였습니다.
마이크로소프트 사에서는 VB 언어의 단점을 보완하기 위한 닷넷 프레임워크(.net Framework) 를 채택하고 이후 인터프리터를 다시 컴파일러로 대체하였으며 자바를 모티브로 한 C# 을 선보였습니다.
이후 우리가 익히 잘 아는 HTML/CSS, JavaScript, 파이썬 등이 등장하고 안정성을 위해 프레임워크가 발전하기 시작하였습니다.
프레임워크(Framework)
프로그래머들은 각자의 방식이 있으며 어떤 식으로든 결과만 나오면 됩니다.
하지만 하나의 결과를 도출하기 위해 코드가 비정상적으로 길거나 컴퓨터가 연산하는게 무리가 가게 되면 그건 좋은 방법이 아닙니다.
이를 보완하기 위해 프레임워크라는 개념이 등장합니다.
단어를 뜯어본다면 Frame(규칙, 규율, 틀) + Work(일, 작업) 으로 작업을 하기위한 규칙을 정한다는 뜻인데 이 말 그대로 프레임워크란 프로그래밍을 할때 정해진 규칙을 지키며 코드를 작성하도록 보조해주는 도구입니다.
이런 규칙은 아무도 강제하지 않지만 모든 개발자들이 따르고 있는데, 효율적인 방법으로 코드를 작성하고 시간을 아끼며 최적의 결과를 내기 위함입니다.
프레임워크는 여러 종류가 있고 자체적으로 만들수도 있습니다. 물론 본인의 프레임워크가 기존 프레임워크보다 더욱 효율적이라면 말이죠
언어의 발전, 현재와 미래
시간이 흐르고 웹, 모바일 어플리케이션, AR, VR, AI 까지 플랫폼이 확장 되며 기존 언어들을 각 플랫폼 개발 형태에 맞게 변형되고 발전 되어 왓습니다.
본격적으로 프로그래밍이 발전하기 시작한 1980년대 이후 지금까지 유래없는 빠른 속도로 언어가 개량되고 개발되어 왓지만 이제는 발전의 속도가 하락하는 추세입니다.
물론 더욱 좋은 언어가 나오고는 있지만 너무 빠른 변화 탓에 사람들은 속도를 따라가지 못하고 기존 언어로 만족하는 경향도 있습니다.
그리고 새로운 언어를 개발하기 보다는 기존 언어의 단점을 보완하고 추가적인 방향을 제시하여 안정화를 하는 전략도 발전 속도가 하락하는것에 한몫 했습니다.
하지만 기술의 발전은 무궁무진하고 지금으로서는 상상도 못하는 많은 기술이 개발될 수 있기에 도태되지 않기 위해 따라가고 앞서가는것이 프로그래머의 숙명입니다.
요즘에는 언어를 사용하지 않는 노코드(No Code) 프로그래밍이 개발되어 가고 있습니다.
기존 프로그래밍 언어를 자체적으로 내장하여 기능을 만들어 놓고 프로그래머는 단순히 화면을 보며 필요한 부분을 설정하기만 하면 되는것이죠.
물론 아직까지는 안정성이 높지 않기 때문에 간단한 프로그램밖에 개발하지 못하지만 이후 이런 노코드 프로그래밍이 발전할 가능성도 있습니다.
그리고 AI의 발전으로 지금보다 더 이후에는 굳이 사람이 하지 않아도 인공지능이 프로그래밍을 할 수도 있겟죠.
대표적인 프로그래밍 언어
현 시대에는 개발 용도에 따라 언어를 입맛대로 골라서 프로그래밍 할 수 있을 정도로 많은 언어가 있습니다.
그 중 대표적으로 가장 많이 사용되는 언어를 소개해 드리겠습니다.
밑의 언어 순서는 순위가 아닙니다.
1. 자바(JAVA)
자바는 안드로이드 애플리케이션 개발 / 웹 개발에 많이 사용되는 언어입니다. 백엔드(Back-End)와 프론트엔드(Front-End) 둘다 개발 가능하고 안정성과 호환성이 좋습니다.
오래된 언어인 만큼 예시도 많고 깔끔한 코드를 만들 수 있어 많이 사용되며 항상 언어 순위 5위 안에 들어갈 정도로 대중적인 언어입니다.
농담으로 전 세계에서 영어보다 많이 쓰이는 언어로 자바를 말할 정도이죠.
2. 자바스크립트(Java Script) / 타입스크립트(Type Script)
자바스크립트는 자바라는 이름이 들어가지만 자바와 전혀 다른 언어입니다.
웹 사이트를 구축하는데 필수적인 언어이며 웹 프론트엔드 개발을 하기 위해서는 필수로 알아야 하는 언어입니다.
타입 스크립트는 자바스크립트의 상위 확장 언어로 보시면 되며 자바스크립트를 기반으로 설계되어 서로 호환이 가능합니다.
3. 파이썬(Python)
파이썬은 데이터 분석, 웹 개발, 서버 개발 등 정말 넓은 범위로 사용할 수 있는 언어입니다.
쉽고, 유지보수가 좋고, 직관적이고, 다른 언어와 호환성이 좋아 최근 프로그래밍 언어 순위가 1위로 등록 되어 있습니다.
많은 양의 데이터를 분석하고 결과를 도출하는 빅데이터 기반을 개발하기에 최적의 언어입니다.
4. C#
C#은 단 하나의 프레임워크로만 사용이 가능하여 닷넷 프레임워크와 합쳐서 C#.net 이라고도 부릅니다.
윈도우 폼(PC 프로그램), 웹 등의 플랫폼을 개발 할 수 있으며 공장 자동화, ERP 등의 시스템을 개발하는데 가장 보편적으로 사용됩니다.
5. 코틀린(Kotlin) / 스위프트(Swift)
옛날에는 안드로이드 앱은 자바 / IOS 앱은 오브젝트-C 를 이용하여 개발하였지만 현재는 자바 대신 코틀린 / 오브젝트-C 대신 스위프트 를 사용합니다.
네이티브 앱 개발에 최적화된 언어이며 특히 코틀린의 경우 자바 대신 사용할 정도로 성장하였습니다.
6. GO
기존 C 언어와 C++ 언어의 장점만을 가져온 C언어와 매우 흡사한 언어입니다.
백엔드 개발에 사용되며 간결하고 빠르기 때문에 최근 엄청난 성장세를 기록 중입니다.
7. React-Native / Flutter / Xamarin
이 보기들은 언어가 아니라 프레임워크 입니다. 하지만 여기에 기술하는 이유는 하나의 코드로 다양한 플랫폼의 결과물을 동시에 뽑을 수 있는 하이브리드 프레임워크 이기 때문입니다.
React-Native는 Java Script 언어 기반 / Flutter는 Dart 언어 / Xamarin은 C# 언어를 사용하여 개발하게 됩니다.
최근 개발 비용을 줄이고 개발 속도를 향상 시키기 위해 많이 사용하는 추세입니다.
위에 정리한 언어들 말고 다른 언어도 정말 많습니다. 하지만 하나하나 모든 언어를 정리하자면 끝이 없기 때문에 최근 각광받는 언어(프레임워크 포함)만을 정리 해 봣습니다.
글 읽어주셔서 감사합니다.