응용, 웹 프로그래머 뭐가 달러?


안녕하세요.
고코더 입니다.


일반인 시선으로는 프로그래머 하면 다 똑같아 보이지만 사실은 굉장히 다른 두 부류가 존재합니다. 하지만 또 알고보면 같은 그룹이기도 합니다. 알쏭 달쏭한 이야기부터 시작했네요. 이번 시간에는 응용 프로그래머와 웹 프로그래머가 어떤 부분이 다른지 알아봅니다.



응용 프로그래머


통상 응용프로그래머를 클라이언트 프로그래머라고도 합니다. 이 블로그를 보고 있는 윈도우와 MAC OS
에서 실행되는 프로그램을 응용 프로그램이라고 합니다. 응용 프로그램은 보통 C, C++, C# 그리고 java와 같은 컴파일 언어로 만들어집니다.


- 오피스 프로그램
- 게임 프로그램
- 기타 등등 모든 응용체제 프로그램
- C, C++, C#, java

응용 프로그래머는 상대적으로 웹프로그래머보다 진입장벽이 높습니다. 상대적으로 쉬운 웹프로그래밍에 비해 약간은 어려울수 있고 일명 국비지원으로 배울 수 있는 학원이 상대적으로 적은 편입니다. 
연봉은 보통 웹보다 많이 받는다는 인식이 있지만 역시나 실력에 따라 천차만별입니다.


웹 프로그래머 


웹 프로그래머는 프론트와 백엔드 프로그래머로 나눕니다. 그리고 백엔드 프로그래머는 보통 서버 프로그래머라고 합니다. 기존에는 프론트와 백엔드를 모두 웹개발자가 하였지만 최근에는 두 가지로 나누어 좀 더 세부적으로 개발하기 시작하였습니다. 지금 이 블로그를 보고 계신 브라우저에서 동작하는 프로그램이 바로 웹 프로그램입니다.


- 웹에서 동작하는 프로그램
- PHP, JSP, ASP 등등

웹 프로그래밍은 다양한 진입경로가 있습니다. 그리고 수요도 많고 공급도 많은 시장입니다. 일명 국비지원이라는 과정으로 한해에도 수 많은 개발자가 배출 됩니다. 하지만 경력직 개발자는 매우 극소수만 살아남게 됩니다. 진입은 쉽지만 오랫동안 일하는 경력자 비율이 떨어지는 재밌는 세계 입니다. 초봉은 응용프로그램에 비해 떨어질 수 있지만 경력자가 되면서 천차 만별의 연봉을 받게 됩니다. 실력의 따른 연봉 차이가 생깁니다. 저도 이 분야에서 10년동안 일 해오고 있고 매우 만족해 하고 있습니다. 



마무리


JAVA는 웹을 만들 수도 있고 응용프로그램을 만들 수 있습니다. 그리고 한국의 과반수는 모두 자바 프로그램을 사용하고 있습니다. 웹을 하다가 응용 프로그래머를 시작하는 분 응용을 하다 웹을 하고 있는 개발자들이 많이 보입니다. 왜냐하면 개발을 어느정도에 올라서면 새로운 언어에 대한 거부감이 줄어들게 되고 자연스럽게 새로운 분야도 쉽게 개척하게 됩니다. 
두 분야의 간격이 좁혀지고 있습니다. 좀 더 먼미래에는 하나의 언어로 두 프로그램을 완벽하게 만들어 낼 수 있는 시대가 오지 않을까 싶네요
만약 두 분야의 진로에서 고민중이라면 당장에 할 수 있는 분야를 경험해보시길 바랍니다. 


댓글을 달아 주세요


프로그래밍 언어는 컴퓨터가 알아 듣는 말입니다.  


안녕하세요.
고코더 입니다.




프로그래밍은 컴퓨터가 알아들을 수 있게 명령을 내리는 일을 코딩이라고 합니다. 우리가 작성하는 코딩의 내용은 기계어로 번역되어 컴퓨터에 의해 실행됩니다. 그래서 우린 프로그래밍을 프로그래밍 언어라고 말을 합니다. 
 영어를 쓰는 사람에게는 내가 아는 언어를 영어로 번역해서말하고, 일본어를 쓰는 사람에게는 일본어로 대화를 걸어야 내 의지를 알아듣습니다. 컴퓨터 언어도 이와 마찮가지입니다. 내가 하고 싶은 일들 의지를 컴퓨터에게 말하려면 컴퓨터가 알아듣는 말로 번역해야 합니다. 이렇게 컴퓨터에게 말하는 과정을 프로그래밍이라고 할 수 있습니다. 



우리의 생각을 컴퓨터 언어로 바꾸기, 고급언어



만약 아이디가 G로 시작하는 사람만 방에 들어올 수 있다는 언어를 사람의 언어와 고급 프로그래밍 언어인 자바스크립트로 작성한 언어로 한번 말해보겠습니다.



프로그래밍 언어로 변경하였습니다. 우리가 원하는 행동을 프로그램으로 번역할 수 있는걸 확인할 수 있습니다. 그래서 개발자가 되려면 컴퓨터 언어로 바꿔보는 연습을 해야합니다. 개인적인 경험으로는 논리 정연하게 말을 잘하는 사람이 코딩도 잘하는걸 알 수 있습니다.

우리가 실습해본 위에 언어는 우리의 말로 어느정도 이해가 가능한 언어에 속합니다. 이를 고급언어라고 합니다. 코딩을 한다면 이런 고급언어를 말합니다. 많이 들어본 단어이죠.
- JAVA
- C ,C++ ,C#
- PHP, ASP
등등이 있습니다.


컴퓨터가 이해하기 쉬운 언어, 저급언어




우리가 위에서 실습해본 고급언어는 컴퓨터에게는 저급언어인 기계어로 해석하게 만들어집니다.
저급언어는 컴퓨터가 알아듣기 쉬운 방식을 말합니다. 우리가 생각하는 방식과 많이 다르므로 이해하기 어렵습니다. 하지만 컴퓨터는 이해하기 쉬운 언어를 말합니다. 저급언어는 기계어와 에셈블리어가 있습니다.

 어셈블리 
기계와와 일대일로 대응하는 프로그램 언어라고 합니다. 가장 밑바닥 언어라고 불립니다. 하드웨어 즉 기계와 통신이 가능하고 제어할 수 있습니다. 하드웨어에 따라 프로그램도 달라져야 하므로 배우기 매우 어려운 언어로 속합니다. 

 기계어
어셈블리어에 거쳐서 만들어지게 되는것이 바로 기계어입니다. 프로그램은 0과 1로 이루어져 있습니다. 이를 기계여라고 합니다. 가장 원초적인 수준의 프로그램입니다. 이는 컴퓨터가 이해하는 언어이며 직접적으로 우리가 2진수를 이해하기에는 무리가 있습니다.


마무리


프로그래밍이란 우리의 말을 컴퓨터에게 전달하는 것입니다.

댓글을 달아 주세요


아스키코드가 뭐에요? 


안녕하세요.
고코더 입니다.


ASCII 코드에 대해 알아봅니다. 아스키코드는 "American Standard Code for Information Interchange"의 약저입니다. 미국 정보 교환 표준 부호라고 번역 가능합니다. 아스키 코드는 7비트로 된 인코딩 부호 체계입니다. 128개의 부호로 영문 키보드에서 사용 가능한 모든 부호를 2바이트 이내로 사용 가능하게한 체계입니다. 52개의 영문 알파벳 대소문자, 10개의 숫자, 32개의 특수 문자, 공백 문자를 표현 가능합니다.


 1. 아스키 코드표


아래 코드에서 나타내는 단어 뜻입니다.

DEC - 10진법(Decimal)
HEX - 16진법
OCT - 8진법


아스키 코드를 표는 온라인에서 많이 참조하는 이재욱님이 정리한 표입니다.


 2. 아스키 변환 사이트 



아스키 표보다 이 사이트에서 즉각적으로 코드를 알아보세요





마무리 



아스키 코드란? 영문자 키보드가 표현하는 문자를 2비트로 나타내는 것 요즘은 별로 안씀


댓글을 달아 주세요


Framework란?


안녕하세요.
고코더 입니다.



오늘은 좀 더 넓은 범위에 개념을 써봅니다. 프레임워크란 무엇인가? 항상 들어온 이 단어의 뉘앙스는 잘 알겠지만 정리하기 참 어려운 말입니다. 프레임워크 없는 개발을 찾는게 더 어려운 시대가 왔습니다. 이 단어에 대해 한번 다양한 방면으로 설명을 해보겠습니다.



 1. 사전적 의미


"소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경"

"복잡한 문제를 해결하거나 서술하는데 사용하는 기본 개념 구조"

"특정한 목적에 사용되는 사고체계"

"어떤 일에 대한 판단이나 결정 따위를 위한 틀."


 2. 랄프 존슨(Ralph Johnson)이 정의한 프레임워크



"소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"


● 3. 프레임워크 비유


프레임워크는 개발을 편하게 해주는 도구입니다. 실생활에서도 우리의 삶을 편하게 해주는 도구들이 있습니다. 고코더가 방을 청소합니다. 먼지도 많고 쓰레기도 많네요. 하지만 집에 아무런 도구가 없습니다. 손으로 쓰레기를 줍고 먼지는 손바닥 날을 이용해서 모아 모아 청소를 하였습니다. 1시간이나 걸렸네요.


이번에는 전자제품 매장에가서 청소기를 사왔습니다. 이 제품은 먼지를 흡입하면서 동시에 물청소까지 해주는 제품입니다. 고코더는 청소기를 사용해 5분만에 청소가 완료되었습니다. 이처럼 프레임워크의 기본적인 개념은 어떤걸 해결하기 위해 빠르게 할 수 있도록 도와주는 기능입니다. 



 4. 프레임워크 장단점


장점

1. 효율적
- 어떤 프로그램을 개발 할때 뼈대부터 개발하는 경우는 거의 없습니다. 비싼 개발자들을 사용하여 기초부터 개발하는건 비용이 발생합니다. 이를 생산성이라고 합니다. 프레임워크는 이미 만들어진 코드를 사용하게 하여 시간과 비용을 아낄 수 있습니다.

2. 완성도
- 현업에서 자주 사용하는 함수를 직접 개발하는 경우는 결국 나중에는 유지보수 대상이 됩니다. 오래동안 쓸 수 있는 함수를 만드는건 쉽지가 않죠. 하지만 프레임워크에서 제공하는 기능들은 검증된 코드입니다. 이를 사용함으로 오류가 적은 품질을 살릴 수 있습니다.

3. 유지보수 
- 프레임워크를 사용하면 다른 회사에서 같은 프레임워크로 다른 시스템을 개발해왔다면 쉽게 적응할 수 있습니다. 현업에서 느끼는 가장 큰 장점입니다. 물런 프레임워크를 어떻게 쓰고 있냐에 따라 적응해야하는 숙제는 있습니다.

4. 확장성
- 새로운 이슈나 기능이 업데이트 되고 이를 사용할 수 있습니다. 확장성으로 인해 업데이트된 기능을 통해 프로그램의 품질을 끌어 올릴 수 있습니다.

단점

1. 학습 필요
- 특정 프로그램 언어를 배우고 해당 프레임워크 사용법과 철학을 익혀야 하는 학습이 필요로 합니다. 현업에서 바쁜 개발자에게 학습을 시키는건 좀 부담스러운 면이 있습니다. 

2. 제약사항
- 프레임워크는 사용법이 정해져 있습니다. 예외적인 소스를 작성할때는 조금 복잡해지는 문제가 있습니다. 하지만 프레임워크 자체가 제약사항을 따르기 위한 것입니다. 청소기로 빨래를 할 수는 있지만 추천하지 않는 방법처럼요.



마무리


프레임워크에게 감사를!


댓글을 달아 주세요


커맨드 라인 인터페이스란?


안녕하세요
고코더 입니다.


CLI는 Command Line Interface 줄임말 입니다.  명령줄 인터페이스라는 이름으로 번역이 가능합니다.
사용자는 커맨드 즉 문자열을 통해 컴퓨터에게 명령을 합니다. 컴퓨터의 응답도 역시 문자열로 출력해주는 방식을 말합니다.



 1. CLI 실행


운영체제에서는 기본적으로 CLI를 제공하고 있습니다.
대표적적으로는 윈도우에서 사용하는 명령 프롬프트(CMD)가 있습니다. 


맥과 리눅스에서는 Terminal 환경이 CLI 입니다. 




 2. CLI 활용


CLI에서는 생각보다. 사용할 거리가 많습니다.
파일이나 폴더를 관리 할 수도 있고
 
파워쉘과 같은 스크립트 언어를 사용하기도 하고
REPL 환경을 사용할 수도 있습니다.


마무리


CLI 환경은 중독입니다.


댓글을 달아 주세요


간단하게 테스트하고 출력하는 커맨드 환경


안녕하세요.
고코더 입니다


 1. 오늘은 REPL 이라는 단어에 대해 알아보려고 합니다.
코딩을 공부하다보면 많이 보이는 단어이지만 그냥 무심히 지나치는 경우가 많습니다.
Read Eval Print Loop 이라는 단어의 줄임말 입니다.

입력(read)
평가(eval)
출력(print) 
반복(loop)

기본적으로 REPL은 명령줄 인터페이스인 CLI위에서 작동 됩니다.  
윈도우에서는 명령프롬프트(CMD), 파워쉘(PowerShell)
리눅스와 맥에서는 터미널(Terminal) 환경에서 사용이 가능합니다.



REPL을 사용하는 이유


 2. 컴파일 과정 없이 즉석에서 코드를 입력해 결과를 바로 알 수 있는 방식을 말합니다. 
개발시에 코드를 즉시 테스트 함으로써 편리한 소스 코드를 디버깅 할 수 있습니다.

투수가 마운드에서 경기를 시작하기전에 몸풀기 투구 처럼 간단하게 시도하고 결과가 반영되지 않는 연습게임처럼 이용이 가능합니다.
간단하게 테스트하는 용도로 즉석에서 결과 값을 얻을 수 있습니다. 

우리가 자주 사용하는 크롬 브라우저에서 F12를 누르면 나타나는 실행되는 개발자 모드에서 console 입력창은 대표적인 REPL 환경이 입니다.
소스를 수정하지 않고 재 실행하지 않아도 결과를 바로 테스트 할 수 있습니다. 
화면에서는 제 홈페이지에 로고를 숨겨보았습니다. 테스트 결과 값을 서버에 저장되지 않고 로컬 환경에서 즉시 얻을 수 있습니다.



마무리


REPL의 목적인 개발 편의성을 제공함으로 개발 시간을 단축시킵니다. 서버 자원을 최소한으로 사용 가능하도록 도와줍니다. 





댓글을 달아 주세요


동기식 비동기식 뭐가 다를까?


안녕하세요.
고코더 입니다.



동기, 비동기 단어 자체가 영어로 보면 머리속에 들어오는데 번역된 한글로 보면 조금 헷갈린 구석이 있습니다.

동기(synchronous)
    - 응답을 받아야만 다음 동작을 실행 
비동기는 (Asynchronous)
    - 응답에 상관 없이 바로 다음 프로세스를 진행



 1. 동기방식


우리가 많이 사용하는 ajax는 보통 동기식을 많이 사용합니다. 해당 데이터를 모두 가져와서 다음 프로세스에서 함께 사용하는 경우가 많기 때문입니다. 동기는 하수도관이 하나 입니다. 물길이 하나여서 하나가 다 된 다음 다음 프로스세를 순차적으로 실행합니다. 프로세스적 절차가 중요한 사이트 관리자 페이지라던가 금융 업무와 같은 곳에서는 동기식인 경우가 많습니다.

특징
    - 한번에 하나씩 처리하면서 내려간다
    - 순차적으로 처리하기에 비동기에 비해 느리게 결과 값이 나타난다.
    - 디버깅이 쉽다




 2. 비동기 


비동기는 다양한 작업이 동시에 일어납니다. 예를 들면 메인화면이 노출되는데 실시간 채팅창은 로딩 된데로 뜨고 게시판 미리보기도 로딩되는데로 뜹니다. 그리고 로그인창이 오랫동안 로딩 하다 404에러가 난다면 다른 프로세스와 상관없이 나중에 오류가 난 박스대로 보여집니다. 이처럼 비동기는 우리가 많이 보는 사이트에 모습입니다.

특징
    - 여러가지 로직이 동시에 처리 된다.
    - 매우 빠르게 결과가 도출된다.
    - 다른 프로세스의 결과 값을 받아 쓸때 이를 조절해야 한다.




마무리


번역 자체가 이상해서 항상 헷갈립니다.
동기가 기다려서 순차적으로 실행하는 단어입니다!!
"동시시 시작하기 위해 기다린다" 이렇게 외우세요!



댓글을 달아 주세요