검수요청.png검수요청.png

코딩

위키원
(Coding에서 넘어옴)
이동: 둘러보기, 검색

코딩(coding)이란 HTML, 자바(Java), 오라클(Oracle) 등의 프로그래밍 언어를 사용하여 컴퓨터가 실행할 수 있는 프로그램을 짜는 행위를 말한다. 다시 말해서 컴퓨터 프로그래밍할 때 코드를 짜는 것이다. 이 중에서 HTML 코딩을 퍼블리싱(publishing)이라고도 한다. 소셜 네트워크를 이용하여 여러 개발자들이 공동으로 코딩하는 것을 소셜코딩(social coding)이라고 한다.

아사달 스마트 호스팅 가로 배너 (since 1998).jpg
이 그림에 대한 정보
[아사달] 스마트 호스팅

개요[편집]

코딩이란 주어진 명령을 컴퓨터가 이해할 수 있는 언어로 입력하는 것을 말한다. 넓은 의미로는 프로그램을 만든다는 뜻으로 '프로그래밍'과 동일한 개념이기도 하다. 프로그램을 만들때 어떤일을 어떻게 수행하게 할지 먼저 계획을 세운다. 예를 들어 A 상황에서는 B 를 실시하도록, C 라는 상황이 오면 A 로 돌아갈 수 있도록 설정하는 것이 바로 코딩이다. 이와 같이 프로그램 구상이 모두 끝이나면, 그 명령을 컴퓨터가 알아들을 수 있는 언어로 입력해 주는 작업이 코딩이다.

다시 말해 코딩은 컴퓨터 프로그램이 어떤 기능을 가지게 할지, 인공지능이 어떤 행동을 하게 만들 지를 입력하는 것으로 프로그래밍에서 가장 기초적이면서도 필수적인 작업이라고 할 수 있다. 인간의 삶을 편리하게 바꿔준 컴퓨터, 화재를 감지해 주는 화재경보기, 청소까지 대신해주는 로봇청소기 등 이 모든 것들이 코딩 작업을 통하여 입력된 명령대로 행동하는 것이다. 컴퓨터와 인공지능이 앞으로 인간의 삶에 더욱이 많은 영향을 끼칠 것이 분명하기 때문에 코딩의 필요성과 가치는 현대 사회에 더욱 강조되고 있다. 그렇기 때문에 2017년부터 코딩은 학교 정규 교육 과정에 포함되었다. 과거에는 프로그래밍 언어를 모두 알아야만 코딩을 할 수 있었다. 하지만 지금은 코딩을 원활하게 할 수 있도록 도와주는 프로그램도 개발되어서 누구든지 손쉽게 코딩을 할 수 있다. [1]

특징[편집]

코딩의 종류[편집]

하드코딩은 설정 사항이나 코드 등의 시스템적으로 사용하는 변수를 쓰지 않고 값을 직접 소스코드에 넣어서 사용하는 방식이다. 코드가 바뀌었을 때 자동으로 반영되지 않기 때문에 버그가 발생할 위기가 있는 방식이다. 하나부터 열까지 직접적으로 입력하는 방식으로 입력하는 데 오류가 발생할 경우 답 또한 오류가 나기 마련인데 파일을 열람하는 경우에도 마찬가지이다. 이 때, 위치와 파일명까지 입력하여 파일을 불러오게 코딩을 할 경우 파일 위치가 처음과 달라졌다면 불러올 수 없다. 따라서 하드코딩은 외부 입력에 대해 유연성이 없고 확장성이 낮은 코딩이다. 하지만 장점도 분명히 존재한다. 코드의 목적이 매우 직관적이기 때문에 가독성이 뛰어나고 컴퓨터 입장에서는 유효성 검사 등이 빠지기 때문에 반복문이 줄어들어 속도가 빨라지며 절대적으로 변경되지 않는 한정적인 부분에 대하여는 효과적이다.
시큐어코딩이란 안전한 소프트웨어 개발을 위해 소스 코드 등에 존재할 수 있는 잠재적인 보안 취약점을 제거하고, 보안을 고려해 기능을 설계하거나 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 과정이다. 즉, 소프트웨어 개발이나 인터넷 사이트 등에서 보안 취약점을 이용한 해킹같은 내외부적 공격으로 부터 시스템을 안전하게 방어할 수 있도록 코딩하는 것이다. 분명히 프로그램이나 웹사이트를 개발함에 있어 보안은 필수적으로 들어가야 한다. 그렇기 때문에 개발 시점에서 설계하는 과정에 있어서 보안요소에 대해서 미리 준비하는 작업을 하는 것이다. 행정안전부에서도 해킹을 미연에 방지하고자 2012년 5월 부터 시큐어코딩 의무제를 시행하였다. [2]

코딩 언어[편집]

  • HTML : 웹페이지를 만드는 언어이다. 이고잉은 웹에 국한하면, HTML이 기본이고 여기에 CSS자바스크립트라는 살을 붙이는 것이 기본적인 교육 방향이라고 했다. HTML이라는 코어 위에 붙일 수 있는 살로는 CSS와 자바스크립트 등이 있다. HTML은 정보를 담는 언어이고 정보만으로는 심미적인 욕구를 충족시키기 어렵다. 그래서 이를 위해 CSS가 고안되었다. CSS는 웹을 꾸며주는 역할을 한다. 그리고 HTML을 제어하기 위한 언어가 필요했는데, 이를 위해서 도입된 언어가 자바스크립트이다.
  • 자바스크립트(JavaScript) : 클라이언트 언어로서 테스팅 환경이 좋으며 특별한 개발도구가 필요하지 않아 초보자도 쉽게 할 수 있다.
  • 파이썬(Python) : 웹사이트와 모바일 앱을 위한 서버 쪽 언어다. 객체 지향적, 동적 타이핑(dynamic typing) 대화형 언어이다. 파이썬은 입문자가 읽기 쉽고 적은 코드로 간단하게 쓸 수 있다. 인스타그램이나 핀터레스트처럼 각광받는 웹사이트들이 쓰는 언어이기도 하다.
  • C : 시스템 언어로 오래전에 생겼지만 그만큼 기본에 충실한 문법 구조를 가진다. 라틴어가 영어, 스페인어의 기초가 된 것처럼 C#, 자바, 오프젝티브C 같은 언어들은 C에서 파생됐다. 컴퓨터 자체, 시스템 자체의 문제를 해결해야 된다면 C를 공부해야 하지만 현실에서 해결해야 하는 문제가 있으면 C보다는 파이썬이나 자바, PHP를 하는 게 낫다는 의견이 많다. 그러나 진입장벽이 높아 입문자에게는 권장하지는 않는다.
  • 스크래치(scratch) : 비주얼 프로그래밍 플랫폼이다. 프로그래밍 언어를 모르는 아이들도 즐겁고 신나게 프로그램을 제작하고 서로 공유할 수 있도록 돕는다. 스크래치를 배우면서 동시에 코딩에 관한 법칙들도 배울 수 있다. 입문자가 접근하기 쉬운 언어이다. [3]

코딩 관련 자격증[편집]

  • SW코딩자격 : 한국생산성본부에서 진행하는 코딩 자격 시험이다. 교육부와 과학기술정보통신부의 SW교육운영 기초에 일치하도록 구성되었으며 국제 IT 자격기관인 ECDL Foundation과 공동개발하여 국제 평가 표준을 반영했다. SW코딩자격 은 블록 코딩의 기초인 스크레치, 엔트리를 사용하여 평가된다. SW코딩자격은 현재 1급은 없으며 2급과 3급을 시행하고 있다. 2급 시험은 총 4과목으로 컴퓨팅적 사고력과 문제 해결, 알고리즘 설계, 프로그래밍 언어 이해, 피지컬 컴퓨팅 이해에 대하여 평가가 진행된다. 3급은 문제해결과 알고리즘 설계, 기본 프로그래밍을 평가한다. 두 시험 모두 45분간 진행되며 70점 이상을 합격기준으로 한다. 또한 2018년 기준으로 매년 5번의 자격 시험을 진행하고있다.
  • COS : COS는 스크래치, 엔트리를 활용해 블록 코딩 능력을 평가하는 시험이다. COS 시험은 시작부터 끝까지 100% 컴퓨터로 진행되는 CBT로 정확한 평가 방식으로 이뤄진다. 그리고 시험 종료 즉시 결과를 알 수 있다. COS 시험은 4급부터 1급까지 있으며, 4급 Start 3급 Basic 2급 Intermedia 1급 Advanced로 구분된다. 4급은 입문자들을 위한 간단한 프로그래밍 도구 활용, 스프라이트 제어, 조건문, 반복문, 연산자 활용, 멀티미디어 활용을 평가한다. 1급에서는 개발 도구의 이해, 함수, 리스트, 변수, 스프라이트 활용, 반복문과 조건문, 연산자 활용,난수, 공통모듈, 소프트웨어 테스트, 멀티미디어 활용, 소스코드 검토 및 디버깅, 성능개선, 알고리즘 지식을 평가한다. 3,4급 시험은 ㅏ각 40분 1,2급 시험은 50분으로 진행된다. 긔고 5,3,4급 시험에서는 600점 이상, 1급은 시험에서는 700점 이상 득점해야 한다. 2018년 기준 연 6회 시험이 진행되고 있다.
  • COS Pro : COS Pro는 파이썬, C, C++, JAVA를 사용하는 코딩 자격 시험이다. 역시 시험 종료 동시 결과를 알 수 있다. 시험은 1급과 2급으로 이루어져 있으며, 둘 다 동일한 과목으로 진행된다. 평가 항목은 프로그램 설계 및 이해, 프로그램 구현, 프로그램 검사 및 수정이다. 1급이 2급보다 난이도가 어렵다. 시험 시간은 2급은 50분, 1급은 90분이다. 그리고 합격 기준은 600점 이상이다. 2018년 기준 연6회 시행하고 있다. COS Pro를 취득한다면 본인이 꽤나 높은 수준의 프로그래밍 활용 능력이 있음을 증명하는 것이다.
  • 정보처리기사, 웹디자인기능사 : 큐넷에서 진행하는 코딩 관련 자격증이다. 먼저 정보처리기능사는 필기와 실기로 나뉘어 진행된다. 필기에서는 전체적인 데이터베이스 전자계산기 운영체제, 소프트웨어 공학, 데이터통신 등 5가지 과목을 평가한다. 그리고 실기에서는 코딩 관련 시험을 포함해 전반적인 정보시스템을 다룰 줄 아는 지를 본다. 또한 실기에서는 C언어와 Java와 SQL 문법을 포함한 문제가 있다. 다만 다른 자격 시험들과는 다르게 일정 프로그램을 사용하지 않고 필답 형식으로 평가한다. 시험시간은 180분이며, 60점 이상을 받아야 합격이다. 2018년 기준으로 연 3회 실시하고 있다. 다음으로 웹디자인기능사는 홈페이지를 기획, 설계제작하여 이에 따른 시스템자원 및 사용할 소프트웨어를 활용해 기본적인 프로그램을 수행하는 것을 평가한다. 역시 필기와 실기로 구분 되어 있다. 필기는 디자인 일반, 인터넷일반, 웹그래픽디자인 등 총 3 과목에 걸쳐서 치른다. 이와 같은 웹 디자인에 대한기본적 이론에 대해 평가한다. 실기에서는 Html 언어와 CSS와 약간의 jQuery를 활용하여 평가한다. 정보처리기사와 다르게 직접 코딩하는 것에 큰 의미가 있다. 시험시간은 240분이며, 60점 이상을 받아야 합격이다. 2018년 기준 연 4회 실시중이다.
  • CLA : C++ 위원회가 공인한 국제인증 자격시험이다. CCPK와 연동되어 있는 일부 대학교에서는 이미 ACA 포토샵, 프리미어 과정을 수강한 사람들에게 유리한 시험이다. CLA는 C언어, CPA는 C++ CPP는 C++ 전문가 수준의 시험이다. CLA 기준으로 컴퓨터 프로그래밍 개발 툴의 개념 및 C언어의 데이터 형식, 의미, 구문 등을 평가한다. 또 모든 문제는 영문으로 출제되어 문제 유형은 객관식이다. CPA와 CPP는 C++ 기반으로 출제되고 난이도는 높다. CLA는 65분 시간 내에 70% 이상 득점해야 합격이다. CPA는 80% 이상 득점해야 합격 하며 CPP도 80% 이상 득점 해야 합격 한다. 그리고 응시료가 다른 자격증에 비해 다소 비싼 편이다.
  • TOPCIT : ICT 산업 종사자 및 소프트웨어 개발자가 비즈니스를 이해하고, 요구사항에 따른 과제를 해결하여 업무를 성공적으로 수행하는데 요구되는 기본적인 이론의 종합적인 능력을 진단하고 평가하는 제도이다. 단순히 코딩 능력만 테스트 하지 않고 기술, 비즈니스 영역으로 나누어 총 6가지로 분야로 나누어 평가한다. 그건 바로 소프트웨어 개발, 데이터베이스 구축 그리고 운영, 네트워크 보안 이해 및 활용능력, IT비즈니스 이해 능력, 테크니컬 커뮤니케이션 능력, 프로젝트 관리 능력이다. 이 중 소프트웨어 개발 분야가 총 배점중 가장 많은 부분을 차지하여 코딩 역량을 평가하는데 가장 큰 영향을 미친다. 또한 TOPCIT은 입문형, 도전형, 능숙형, 문제해결형, 창의융합형 이 5가지로 구분되어 있다.
  • SW 테스트 전문가 : 이 자격증은 일반등급과 고급등급 두 가지로 나뉜다. 먼저 일반 등급은 소프트웨어 테스트 개요 및 프로세스에 대한 기본지식을 갖추고 테스트 계획, 설계, 환경 구축, 실행, 결함 보고, 리포트 등 기본적인 실무 수행 능력을 평가하며 누구나 응시가 가능하다. 90분 내에 75점 이상 득점해야 합격할 수 있다. 그리고 고급 등급은 전문적인 테스트를 수행하고 테스트 조직을 이끄는 수준을 평가하는 것이다. 소프트웨어 개발 및 테스트 관련 5년 이상의 경력자 또는 소프트웨어 테스트 전문가 일반등급 자격취득자 중 해당 분야에서 3년 이상의 경력이 있는 사람들에게만 응시 자격이 주어진다. 시험 시간은 150분이며, 75점 이상 받아야 합격한다. [4]

활용[편집]

블록체인 개발에 필요한 코딩 언어[편집]

예전에는 읽고 쓰는 것을 배울 수 있었고, 그것만으로도 충분히 읽고 쓸 줄 알았다. 그러나 현대 사회에는 그것만으로는 충분하지 않다. 오늘날 읽고 쓸 줄 아는 사람이 되려면 기본적인 HTML, CSS 등 코딩(coding)을 알아야 한다. 코딩은 더 이상 기술자들만 하는 것이 아닌 모든 사람이 알아야 하는 기본적인 기술이 됐다. 그에 대해 암호화폐 전문매체 비트코인익스체인지가이드는 디지털 공간에서 가장 흥미로운 두 가지 발전은 분산원장 기술(Distributed Ledger Technology, DLT)과 인공지능(AI)라고 말했다. 기술이 어떻든 간에, 먼저 프로그래밍 언어를 배워야 한다. 또한 블록체인 공간에서 가장 많이 사용하는 다양한 프로그래밍 언어에 대해서도 설명하였다.

먼저 C++은 오래된 프로그래밍 언어이자 오늘날까지도 매우 유용하게 쓰인다. 2009년에는 암호화폐 혁명을 시작한 데 쓰였는데, 최초의 가상화폐인 비트코인은 C++로 쓰여졌다. 하지만 C++은 아직 스마트 계약에 사용되지 않고 있다. 그러나 앞으로 약간 더 수정만 하면 스마트 계약에서도 사용 가능할 것이다. C++은 여전히 가장 영향력이 큰 프로그래밍 언어 중 하나다.

다음으로 살펴볼 언어는 C#이다. C#은 마이크로소프트에 의하여 1990년대 말에 만들어졌다. C#는 엔터프라이즈급 애플리케이션에 적합하다. C#는 좋은 커뮤니티의 지원을 받는 기능적인 프래밍 언어로, 대규모 블록체인 구현을 위한 수단이다. 이 언어는 흔히 다른 프로그램들의 휴대성과 오픈 소스가 되는데 이는 꽤 인기가 많은 언어라는 것이다.

세 번째로 살펴볼 언어는 자바스크립트(JavaScript)이다. 2007년 제프 앳우드(Jeff Atwood)가 만들었으며, 이 세상에서 쓸 수 있는 앱은 모두 자바스크립트로 쓰인다 해도 과언이 아닐 정도이다. 자바 스크립트는 사물인터넷(IoT) 기기부터 클라이언트 서버까지 모든 것에 전력을 공급하고 기계학습에도 쓰인다. 블록체인에서는 한동안 인기가 없었는데 2년 전 ICO(암호화폐공개)가 성행하면서 모든 것이 바뀌었다. 자바스크립트는 많은 커뮤니티의 지원을 받으며 다른 그 어떤 언어보다 배울 기회가 훨씬 많다. 그렇기에 초보자가 가장 먼저 배우기 좋은 언어이다.

네 번째는 파이썬(Python)이다. 파이썬은 사물을 단순히 유지함으로써 얻을 수 있는 것을 증명한다. 파이썬은 일반적인 인터넷 웹상에서 그런 것처럼, 암호화폐 시스템에서도 자주 쓰인다. IBM의 하이퍼레저 소투스(Hyperledge Sawtooth)에서 이를 구현했고 이더리움(Etherum)은 파이더리움(Pythereium)이라고 불리는 파이썬 버전을 만든다. 또한 파이썬은 방대한 양의 라이브러리와 프레임 워크를 가지고 있다. 마지막으로 살펴볼 언어는 솔리디티(Solidity)이다. 새로운 기술이 나올 때마다, 그에 맞는 새로운 프로그래밍 언어를 꼭 만들 필요는 없다. 그러나 솔리디티는 예외저긍로 이더리움 네트워크에 스마트 계약을 쓰기 위하여 만들어졌다. 솔리디티는 객체 지향성 프로그래밍 언어이다. 그리고 자바스크립트, C++, 그리고 파이썬의 일부 구문을 가진다. 또한 솔리디티ERC-20이란 이더리움 스마트 계약의 현재 표준을 설정한 데 기여했다. [5]

블록체인 채용 현황과 기술 역량 습득 가이드[편집]

블록체인 개발 관련 수요는 많은데 비해 개발자가 부족하다. 기업용 블록체인 분산 장부 개발 업무는 최근 급속도로 성장하는 20대 직무 기술 가운데 2위를 차지할 정도이다. 블록체인 엔지니어 다음으로 급속도로 수요가 올라가는 직업은 이와 관련된 기술을 다루는 비트코인 암호화폐 개발자이다. 한편, 블록체인 개발 역량을 갖춘 사람들을 위한 일자리는 2017년보다 200% 가량 늘어 났다. 따라서 블록체인 개발자 또는 엔지니어의 급여 역시 많이 올랐다. 직업 데이터 분석 업체인 버닝 글래스 테크놀로지(Burning Glass Technologies)의 맷 시겔먼 대표에 따르면, 미국 내 일반 소프트웨어 개발자의 중간 연봉이 10만 5000천 달러인데 비해 블록체인 개발자 또는 공학자의 연봉은 13만 달러에 이를 정도이다. 또한 실리콘 밸리, 뉴욕, 보스턴과 같은 미국 내 하이테크 지역의 블록체인 개발자의 중간 연봉은 15만 8000천달러 정도로 일반 소프트웨어 개발자보다 1만 8000천 달러가 더 높다. 그리고 딜로이트 컨설팅의 기술 및 뱅킹 업무 수석 컨설턴트인 에릭 피니시솔리디티(Solidity), 하이퍼레저 컴포저(Hyperledger Composer)와 같은 특정 블록체인 툴을 다뤄본 사람들은 수요가 더욱 높으며 꾸준히 상승한다고 한다. 그러면서 피니시는 이메일을 통해 아침에 잠에서 깨면 팀에 합류시킬 엔지니어들을 어디서 찾을까 하는 고민부터 한다. 솔리디티는 위에서 언급한 것처럼, 스마트 계약을 만들기 위한 블록체인 프로그래밍 언어이다. 그리고 하이퍼레저컴포저는 자바 스크립트에 기반한 오픈소스 버전의 블록체인이다. 하이퍼레저이더리움(Ethereum)은 세계 최고의 블록체인 플랫폼으로, 둘 다 스마트 계약에서부터 이더리움의 이더(Ether)와 같은 암호화폐에 이르기까지 수많은 디앱을 만드는 기반이 된다. 리눅스 재단에서 후원하는 하이퍼레저는 블록체인 기술을 발전시키기 위해 만들어진 여러 산업간 협력 활동이다. 이와 관련된 하이퍼레저 패브릭(Hyperledger Fabric) 및 하이퍼레저 소투스(Hyperledger Sawtooth) 모듈식 프레임워크는 기업용 분산 장부 개발의 토대가 될 수 있다.

그리고 피니시에 따르면 블록체인 기술을 추가로 익히거나 블록체인 개발자로 경력을 쌓으려면 대부분 자바나 파이썬 같은 프로그래밍 언어에 익숙한 경우가 보통이지만 꼭 그래야 하는 건 아니다. 그래도 지금 가장 쉽고 빨리 프로그래밍 언어를 익히는 방법은 스스로 공부하거나 콘센시스(Consensys), 블록앱스(Blockapps), 이더리움재단, 하이퍼레저와 같은 블록체인 업체 및 업계 그룹에서 주최하는 프로그램에 참석하는 것이다. 이와 관련해도 하이퍼레저 커뮤니티 설계자 트레이시 커트는 블록체인 강좌를 신청하는 사람들은 주로 소프트웨어 개발자라고 한다. 그러나 그렇지 되지 않더라도 분산 장부 기술의 비즈니스 지향적 지식을 얻을 수 있고 자신의 회사를 위하여 블록체인 네트워크를 만들 방법을 배울 수도 있다고 한다. 하이퍼레저에서는 자신의 블록체인 기술이 어떤 방법으로 응용되는지 단순히 배우고 싶어하는 사람들을 위한 입문 강좌를 제공한다. 이 강좌에서는 하이퍼레저 프레임워크로 블록체인 애플리케이션을 구축하는 방법을 배우길 원하는 컴퓨터 전문가들을 위한 기본 내용이 포함된다. 코딩을 배우길 원하는 개발자라면, 하이퍼레저 패브릭이나 소투스 처럼 블록체인 모듈식 플랫폼에 대한 구체적인 강좌를 들으면 된다. 그 외에 하이퍼레저 블록체인 기술 자격증을 취득하고자 하는 사람들은 오픈 온라인 강좌 제공업체인 에드엑스를 수료한 후 99달러를 낸다. 하이퍼레저에는 하이퍼레저 패브릭과 소투스라는 두 가지 프로젝트에 대한 작업 사례를 알려주며, 이처럼 이를 끝까지 살필 수 있는 단계별 지침이 마련되어 있다. 그리고 이 강좌는 컴퓨터에서 명령줄을 들여다 보는 경험이 없는 사람에게는 어려울 수 있지만, 누구든 블록체인 기술로 어떤 것이 가능할지 쉽게 볼 수 있게끔 도와주고자 한다.[6]

동영상[편집]

각주[편집]

  1. 코딩〉, 《네이버 지식백과》
  2. 악동꼬마, 〈코딩이란? 코딩의종류 그리고 기본바로알기〉, 《네이버 블로그》, 2014-10-27
  3. 권혜미, 〈코딩 입문자, 어떤 언어부터 배워야 할까〉, 《bloter》, 2014-06-20
  4. 과학기술정보통신부, 〈코딩능력을 평가하는 코딩자격증, 종류 바로알기!〉, 《네이버 블로그》, 2018-07-05
  5. Travis Williams, 〈블록체인 개발에 필요한 코딩 언어…"C++·C#·자바스크립트·파이썬·솔리디티"〉, 《codingworldnews》, 2019-04-29
  6. Lucas Mearian,〈“수요는 많은데 개발자는 부족” 블록체인 채용 현황과 기술 역량 습득 가이드〉, 《itworld》, 2018-03-05

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 코딩 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.