반응형

Engineering 23

[FP] 함수형/선언형에 대한 고찰

프롤로그요즘 AI Transformation으로 IT 사업이 새로운 국면으로 넘어가는 것 같다. 그래서 최근에 이와 관련된 글도 작성했었다. 그런데 이번에는 함수형과 선언형에 대해서 얘기해보고 싶다. 이는 오래된 주제이기도 하고, 필자가 2016년부터 깊게 파고 있는 주제이다. 필자가 짠 코드가 의도된 대로만 동작하도록 제어하고 싶은 맘에서 학부 시절부터 디자인 패턴과 소프트웨어 공학에 심취했던 나였다. 그런 필자에게 새롭게 다가왔던 개념은 함수형이었다. 함수형은 내가 작성한 코드가 내가 의도한 대로 코드가 동작하도록 하는 강력한 무기가 되었다. 발생할 수 있는 예외 케이스 또한 내가 정의한 에러 코드를 통해서 예측 가능한 범주 내로 가이드해주었다. 진정한 함수형/선언형 코드를 작성했다면, 심지어 코드 ..

[Architecture] 미디어 플레이어의 구조에 대한 고찰

Background처리해야 할 데이터가 많은 경우에는 멀티 코어 프로세서의 환경을 적극 활용하여, 최대한 가용한 리소스를 극한까지 사용해야 할 필요가 있다. 미디어 처리를 최대한 빠르게 처리하여 사용자에게 seemless 한 사용자 경험을 제공하는 것이다. 이를 위해서 여러 가지의 방법이 동원되게 된다. 그리고 소프트웨어 구조에 대해서 얘기하자면, 소프트웨어 구조는 확장성이 가능하도록 구현되어야 한다. 기본적으로 응집도를 높이고 결합도를 낮추라는 말을 많이 들었을 것이다. 예전부터 나는 이에 대해 어마무시하게 집중을 했다. 그리고 실제로 많이 중요하다. 실제로 회사에서 소속되어 개발을 하다 보면, 이를 무시하고 거대한 코드 뭉치를 만들어서 손도 못 대도록 구현할 때가 있다. 그리고 본인이 만든 코드 뭉치..

Engineering/OS 2025.11.17

[AI] LLM : AI Literacy에 대한 고찰

Background위키피디아에 AI Literacy (이하, 'AI 리터러시')를 찾아보았다. "개인이 AI 기술을 비판적으로 평가하고 AI와 효과적으로 커뮤니케이션 및 협업하며, 온라인, 가정 및 직장에서 AI를 도구로 사용할 수 있는 일련의 역량"이라고 정의한다. AI 리터러시는 2가지의 측면으로 구상이 가능할 것 같다. 첫째는 'AI의 작동 원리를 이해하고 본인이 원하는 답변을 이끌어 내도록 환경을 구축하고 활용할 수 있는가?'이고, 둘째는 'AI가 처리한 결과물에 대해서 무조건적인 믿음이 아닌 비판적 사고로 받아들이고, 이를 평가 및 판단할 수 있는가'이다. 우리는 이제는 더 이상 괄시할 수 없는 AI에 대해서 보다 활용을 잘하기 위해서, 'AI 리터러시'라는 과제에 대해서 좀 더 고민하고 공부를..

Engineering/Issue 2025.10.20

[Software Engineering] GitHub에서 놀자!! (깃허브 사용법)

깃허브(이하 '깃헙')는 개발자들의 놀이터이다. 하지만 놀이기구를 탈 줄 모르는 개발자들이 많아 필자가 깃헙을 사용하면서 터득한 내용들을 공유하려고 한다. 깃헙에서 놀고 싶고 전세계 개발자들과 교류하고 싶은 개발자들은 이 글을 참고하기를 바란다. 혹시 GitHub(깃헙)이 아닌 형상관리 도구인 Git(깃)을 찾는 분이리면 'Git의 개념과 기초 사용법'으로 가길 바란다. https://github.com/MBKwon 1. 놀이터 몰색 우선, 내가 놀고싶은 놀이터를 찾는 일이 필요하다. 내가 사용하는 주요 프로그래밍 언어, 관심있는 플랫폼, 사용중인 라이브러리/프레임워크와의 연관성 등 개발자들은 자신이 놀 놀이터에 관해 호불호가 갈리게 되어 있다. 깃헙에서 자신이 놀고 싶은 놀이터를 찾는 것도 하나의 일이..

[Software Engineering] Git의 개념과 기초 사용법

위의 자료를 이용하여 Git에 관하여 공부하자!! SVN은 보통 저장소가 서버에 존재하게 된다. Git은 저장소가 내 컴퓨터에 존재한다. 그렇기 때문에 속도가 빠르다. 그리고 다른 사람과의 작업을 원한다면 내 컴퓨터의 저장소를 원격 저장소에 연결하면 된다. Commit은 내 컴퓨터의 저장소에 작업 내용을 올리는 것이고 원격 저장소에 작업 내용을 올리는 것은 Push라고 한다. 결과적으로 Git은 밑의 그림처럼 보여진다. 위와 같은 구조로 인하여 Git이 갖는 장점은 무엇보다 빠르다는 것이다. Commit을 로컬 저장소에 하기 때문에 네트워크를 거치지 않고 당연히 빠를 수 밖에 없다. 네트워크가 불가한 상황에서도 작업을 계속할 수 있다. 로컬 저장소를 이용하기 때문이다. 또 하나 알아두어야 할 것은 Sta..

[Programming Language] Programming Languages for May 2013

세계적인 프로그래밍 언어의 추세를 확인할 수 있는 도표이다. 역시 C와 자바가 절대적이다. iOS 개발의 영향으로 Objective C의 성장이 꾸준하다. 애플의 약세와 상관없이 앱 스토어는 꾸준히 돈을 벌어다 주기 때문인 듯 하다. 이외에 웹 언어들이 보인다. Lisp과 Pascal, 어셈블리어도 눈에 띈다. 출처 : http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Engineering/Issue 2013.05.20

[Software Engineering] 소프트웨어 개발 생명 주기

소프트웨어 개발 생명 주기는 아는 데, SDLC(Software Development Life Cycle)정보처리기사에서도 쉬운 문제로 등장한다. 1. 주먹구구식크기가 매우 작은 소프트웨어 개발에 사용된다. 첫번째 버전 연구 -> 제품개발 ->운영모드/유지보수 2. 폭포수 모델순차적으로 개발하는 전형적인 개발 모델 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수 3. 원형 모델Proto type을 만들어서 고객과 사용자가 함께 요구사항을 정제하면서 만들어가는 방법 요구사항 정의 -> 원형 설계 -> 원형 개발 -> 고객평가 -> 원형정제 -> (요구사항 수정) -> 엔지니어 제품 -> 제품개발 4. 나선형 모델위험 분석을 추가한 점진적인 개발 방법 계획 및 정의 -> 위험 분석 -> 개발 ..

[Computer]가상화

가상화는 컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. 이것은 다중 논리 리소스로서의 기능을 하는 것처럼 보이는 서버, 운영 체제, 응용 프로그램, 또는 저장 장치와 같은 하나의 단일 물리 리소스를 만들어 낸다. 아니면 단일 논리 리소스처럼 보이는 저장 장치나 서버와 같은 여러 개의 물리적 리소스를 만들어 낼 수 있다. 출처 : http://ko.wikipedia.org/wiki/가상화

[Computer]CISC와 RISC

CISC(Complex Instruction Set Computer) 모든 고급언어 문장들에 대해 각각 기계 명령어가 대응되도록 하는것 RISC(Reduced Instruction Set Computer) CISC의 많은 명령어중 주로 쓰이는것만을 추려서 하드웨어로 구현하는 것 이것이 핵심 개념인데요.. 구체적으로 장단점을 따져보겠습니다. CISC의 단점이자 RISC의 장점은 CISC의 경우 하드웨어의 회로가 복잡해져서 RISC에 비해 가격이 비싸지고 발열이 많고 전력소모가 많게 됩니다. CISC는 고급언어의 컴파일러의 번역과정을 간단하게 해줍니다. 즉, CISC 각각의 명령어는 머신코드는 길지만 전체 프로그램 사이즈는 RISC보다 작습니다. 따라서 코드를 수행할 때 RISC가 메모리를 더 많이 참조해야..

반응형