

Hits: 3
Language 언어는 음성과 문자를 형식으로 의사소통의 수단으로 사용하는 체계이죠~?
그러나 아무거나 소리랑 글로 정의한다고 언어가 될 수 있는지는 잘 모르겠습니다 ㅎㅎ 전 언어학자는 아니기 때문에 ㅠㅠ 그러나 일반적으로 사회적 합의가 이루어지고 이게 보편적으로 사용되어 발전되고 있는 것 이라고 하면 될까요 ㅎ?
지금 이 순간에도 언어는 계속 진화하고 신조어도 등장하고 문법도 변경되면서 발전하고 있습니다, 세종대왕님이 만드신 우리의 한글만 봐도 처음 창시할 때의 모습과는 다른모습으로 발전되고 있는 상황입니다.
읍니다 -> 습니다 처럼 변경되어 지기도 하면서 말이죠
그럼 프로그래밍 언어(Programming Language)는 어떻게 정의 할 수 있을까요~?
기계(컴퓨터)는 “안녕하세요~?” 라는 말은 알아들을 수 있을까요~? …. 뭐 다들 아시다시피 알아듣지 못합니다~, 매트릭스 같은 영화에 보면 배경으로 막 00011101010101 같은 숫자들이 내려 오던 것을 보신 적 있으신지 모르겠네요~
우리가 원하는 명령을 이 기계(컴퓨터)가 알아들을 수 있도록 번역이 가능한 문법을 가진 체계를 프로그래밍 언어~ 라고 보시면 됩니다, 이 프로그래밍 언어들도 종류가 엄청 다양합니다.
먼저 형태에 따라서 저급 언어와 고급 언어로 구분합니다, 이건 이런게 있구나 하고 그냥 알고만 가셔도 됩니다 흔히 개발공부한다 개발자가 어떤 언어를 전공으로 하고있다 라고 할때의 개발언어는 다 고급 언어 라고 보시면 됩니다.
저급 언어 ( Low-Level-Language )
- 기계 중심…001101011011…요런식 ㅋㅋㅋ
- 빠름…..기계(컴퓨터)입장 에서는 번역이 필요 없음
고급 언어 ( High-Level-Language )
- 사람 중심.. if ( i > 90 ) { 학점 = “A” } else ……
- 느림…..기계(컴퓨터)에게 알려주기 위한 번역이 필요함 ( interpreter or compiler )
이런 특징으로 구분 되기도 합니다.
자 그럼 고급 언어 에 관련된 이야기를 더 해볼까요~?
일전에 https://youtu.be/tTy-HtMI_Jk?t=960 이 영상에서도 비슷한 이야기를 한 적이 있습니다 ㅎㅎ
실제 외국어와 프로그래밍 언어를 놓고 비교하면 이해하기 쉬우실 지 모르겠지만 저는 주로 이렇게 비교하고는 합니다, 영어/중국어/일본어/프랑스어 이런 것 처럼 JAVA/C#/Python/Kotlin 이런 식으로 다양합니다.
모두 고급 언어에 속하는 언어들입니다, 이제 저급 언어 / 고급 언어 이런 구분은 하지 않겠습니다…ㅎㅎ 모두 고급 언어에 대한 이야기일 테니까요
자 우선 프로그래밍 언어가 무언지 보러 오신 분들은 궁금하시다 생각하니!!!!
TIOBE 라는 웹사이트를 한번 가볼까요~ ->> https://www.tiobe.com/tiobe-index/
바뀔지도 모르니 혹시…ㅋㅋㅋ 스크린샷 하나를 넣고 이야기 하겠습니다.
많죠 ㅎㅎ????? 여기서 2가지의 경우로만 제 의견을 말씀드리겠습니다.
- 그냥 우리 회사 개발자들이 뭐하는지 혹은 나의 업무 이해도를 위해 공부하시는분
- 개발자가 되고 싶으신 분들 중 내가 어떤 언어를 공부해야 하는지도 모르시겠는분
1번이신 분들은 개발자 동료분들이 주 언어가 무엇인가 많이 들어보셨을 꺼에요, 자바 개발자인지 파이선 개발자인지 그럼 아….영어 전문가 중국어 전문가 이런 의미로 받아들여주시면 됩니다..ㅎㅎ 같은 언어(?) 니까요 ㅋㅋㅋ
통역사 = 외국어를 모국어를 사용하는 사람들이 알아들을 수 있게 번역하는 사람
개발자 = 프로그래밍 언어를 기계(컴퓨터)가 알아들을 수 있게 번역하는 사람
즉 결론 적으로 프로그래밍 언어가 무언가 궁금하셨던 분들의 결론은 기계(컴퓨터)가 알아 들을 수 있게 번역하기 위한 Language이며 이를 다룰 수 있는 사람들을 프로그래머 라고 한다!!
2번이신 분들은 저 언어의 종류보다 먼저 알아 주셨으면 하는게 있어서 따로 설명을 해볼게요~
프로그래머도 종류가 있습니다…..뭐랄까요….다시 외국어를 하시는 분들의 예를 들어볼까요
영어 전문가(?) 이런분이 계시다면 생활영어/비지니스영어/의학영어/동시통역/번역 이런게 다 가능할까요? 하나의 언어만 놓고봐도 분야가 나뉘게 되죠~?
- 응용 프로그래머
- PC의 자원을 활용하는 어플리케이션을 만드는 분들입니다 ( Office, Photoshop 등의 Tools )
- 웹 프로그래머
- 웹 브라우저를 기반으로 어플리케이션을 만드는 분들입니다 ( Website 등의 브라우저 안의 모든 영역 )
- 시스템 프로그래머
- 응용/웹 프로그램 보다 더 기계(컴퓨터)와 가까운 영역의 프로그래밍을 하시는 분들입니다 ( OS 영역? )
- 임베디드 프로그래머
- 기계제어가 필요한 시스템…(mp3플레이어, 기판 기반의 기계안의 제어 등)의 환경에서 어플리케이션을 만드는 분들입니다. ( TV 리모컨, 노래방 기계, 통신기 등등 )
- 보안 프로그래머
- 바로 일전에~~~ 방화벽!!! 공부했죠 ㅎ? 방화벽을 포함한 바이러스 침입을 대비하고 연구하는 어플리케이션을 개발하고 관련 프로그래밍을 하시는 분들입니다 ( V3백신, Web 방화벽 개발 등 )
사실 여기에 게임 프로그래머가 있습니다만..정말 죄송한 이야기를 드리면….게임개발자를 1도 모릅니다 ㅠㅠ 일단 엄청 하이클래스 개발자 분들이라고 알고있습니다만…ㅠㅠ
자 본인이 이제 어느길로 가고 싶으신지…아시겠나요~? 보통 요즘 APP 개발은 응용/웹 양쪽에서 전부 접근가능해서 전문적으로 하시는분들 외에도 하이브리드….그러니까 껍데기는 APP개발로 하고 안에는 Web으로 개발하는 식의 방식도 많아서 APP만을 전문적으로 하시는 분들도 역시 저는 본적이 없는 듯 합니다 ( 요즘은 다를지도 몰라요~~~~전 4년전부터 주 업무가 개발이 아니었습니다요~~~+_+ )
위의 분야 중 본인이 희망하는….분야로 검색 해 보시면 필수 언어와 요즘 가장 많이 사용하는 언어 등의 정보가 많이 나오기 때문에 꼼꼼하게 챙겨 보시고 공부하시는게 좋을 듯 합니다.
….사실 처음 취직하는 곳 에서 사용하는 언어와 프레임웍을 먼저 배우게 되어있습니다 ( 월급은 받아야죠~? ㅋ )
자연스럽게..ㅋㅋ 프레임웍 이란게 나왔죠~ 아…자연스럽다…….ㄷㄷㄷㄷ
Framework 을 말씀드리려면 Library 라는 개념이 같이 설명이 필요합니다…갑자기 무슨 도서관이냐고요~? 개념은 비슷하기때문에 아마 그런 명칭을 붙여놓지 않았나 합니다….ㅎㅎ
프로그래밍 언어..역시 하나의 언어라고 했잖아요~?, 단어들이 있고 문법들이 있고 이를 나열해서 문장을 만들어서 기계(컴퓨터)가 알아들을 수 있게 번역하는 방식이라고 지금까지 말씀드렸습니다.
이에 Library는 “여행영어 단어만 바꿔서 활용해보자!!!” 라는 책을 하나 샀다고 가정할게요
이 ㅇㅇㅇ 은 얼마인가요? 에서 ㅇㅇㅇ 만 바꾸어서 아는 단어만큼의 문장을 만들 수 있죠~?
ㅇㅇㅇ 로 가려면 어떻게 해야 하나요? ㅇㅇㅇ 만 바꾸면 어디든 갈 수 있을 것 같지 않나요~? – _-(죄송….)
이런 의미라고 보시면 됩니다…..정확하진 않습니다만 무슨 숙어집! 같은 느낌이죠 여기서 내가 저 얼마인가요는 필요가 없다면 안쓰면 그만입니다 ㅎㅎ 어디 갈때만 스윽…참고해서 단어 집어넣고 물어보면 어디로 가면 되나요? 라는 문장을 활용 할 수 있겠죠 ㅎㅎㅎ
이게~! Library 라고 합니다…..가장 대표적으로 웹 프로그래밍을 하면서 jQuery라는게 있습니다
링크 : https://jquery.com/
저 jQuery라는 library를 사용하면 저 안의 수많은 기능들이 일단 나의 소스에 다 포함되지만 뭘 무조건 써야하는건 아니고 필요한 기능들만 사용이 가능합니다. 좋쵸~?
그러나 비슷하지만 Framework 라는 건 보다 규칙과 절차를 요구하는게 많습니다 보다 강제되는 것도 있죠 이것도 예를 하나 말씀드리면 C#이라는 프로그래밍 언어를 사용해서 개발하다보면 많이 만나는 Entity Framework 라는게 있습니다.
링크 : https://learn.microsoft.com/ko-kr/ef/core/get-started/overview/first-app?tabs=netcore-cli
전혀 모르는 입장에서 보면 뭘 요구한다는거지? 하시겠지만 여행영어를 그대로 ….사실 예를 들려나보니 말은 안되지만 ㅎㅎㅎㅎ 여행영어를 Library가 아니라 Framework 라고 가정하면 무조건 이 물건이 얼마인지 물어봐서 얼마인지 알아둔 다음에 어디로 가야하는지를 물어봐야 하는 행동을 해야만 하는거라고…….말하면서도…말이…안되네요 ㅋㅋㅋㅋ 뭐……..ㅠㅠ 아무튼 그렇습니다 ㅎㅎ
이걸….조금 있어 보이게 말씀드려보면 ㅋㅋㅋ
Library는 Application Code의 흐름을 직접 제어하나 필요한 기능이 있을 때 사용할 뿐이지만
Framework는 Application Code 자체가 Framework에 의해 사용된다 Framework는 제어의 역전 개념이 적용되어 있어야 한다 즉 Framework가 사용된 Applocation Code는 Framework가 짜 놓은 틀에서 수동적 으로 동작해야 한다
토비의 스프링 내용중 발췌
여기서 말하는 제어의 역전(IoC, Inversion of Control) 이란건 ….권한을 준다~? 위임한다~ Framework에게 Source Code의 규칙을 형석하는 권한을 넘긴다~ 뭐 이렇게만 생각 해 주시면 됩니다..
뭔가 Framework가 대단해 보이죠 ㅎㅎ?
각 언어별로 유명한 Framework가 존재합니다
- JAVA : Spring
- Python : Django
- Web개발 : Vue.js, Angular 등등
- Ruby : Ruby on Rails
뭐…많이 있습니다 ㅋㅋㅋ 벤츠와 AMG? 이런관계~?
이런 것 들을 Framework라 합니다..ㅎㅎ
사실 이 Framework는 실제 외국어의 개념으로 비교해서는 딱 맞아떨어지는 부분이 없긴 하네요 ㅎㅎ
여기까지 프로그래밍 언어와~ 프레임웍에 대한 이야기를 해 보았는데 도움이 되셨는지 모르겠습니다~
감사합니다~