Browsed by
[Month:] 2023년 12월

Stolen Focus (도둑맞은 집중력)

Stolen Focus (도둑맞은 집중력)

시간이 좀 나서 책을 좀 읽어 볼까 하고 인터넷 서점을 둘러 보던 차에 “도둑맞은 집중력” 이란 베스트셀러 책이 눈에 들어 온다. 서평을 보니 요즘 시대에 누구나 겪을 것으로 여겨지는 집중력 문제를 다루고 있다. 몇 년 전 나도 하나에 집중하지 못할 뿐만 아니라 기억력이 급격히 떨어지는 현상을 겪은 터이라 내용이 더 잘 와닿고 공감할 부분이 많을 것 같아 읽어 보기로 한다 squalid ravine 하버드 교수 B. F. Skinner는 돼지, 쥐, 또는 비둘기와 같이 동물의 자유의지를 통제할 수 있다고 주장을 최초로 주장했다….

Read More Read More

Recursion and Tail-Call Optimization

Recursion and Tail-Call Optimization

프로그래밍에서 Recursive Call을 설명할 때 당골로 언급되는 것이 factorial 예제를 통해 값을 구하는 것일 것이다. 그냥 겉으로 보기에는 코드의 길이가 짧고 깔금해 보이지만 내부적으로 보면 Stack을 과도하게 사용할 수 있고 이로 인해 Stack Overflow가 발생할 가능성이 있어 되도록이면 Recursion보다 Loop을 사용하도록 가이드 하고 있다. Tail Call이란 Java는 단지 언어(language)를 넘어 하나의 플랫폼 역할을 한다. 즉, JVM은 단지 Java 언어 뿐만 아니라 Groovy, Scala같이 다른 언어들도 지원한다는 것을 알고나면 플랫폼이란 말이 이해가 될 것이다. 많은 functional language interpreter들은 recursion 동작을 optimize함으로써…

Read More Read More

Sequential or Temporal Coupling

Sequential or Temporal Coupling

Functional Programming에 관심이 많은 개발자들은 위 제목이 무엇을 뜻하는지 잘 알것이다. 내용을 다시 확인해 보자면 Functional Programming은 할당문(assignment statements) 사용하지 않고 프로그래밍 하는 것이라 할 수 있다. 따라서 Functional Programming은 변수를 사용하지 않고 프로그래밍하는 것이며 functional Programming에서 값(values)는 변하지 않는다라고 할 수 있다. 왜 이것이 바람직한지 아래의 코드를 한번 보자 시스템의 상태는 Block A를 실행할 때와 Block B를 실행할 때가 서로 다를 것이다. 이 말은 Block A가 반드시 Block B에 앞서 실행되어야 한다는 것을 의미한다. 만약 이 두 Block의 순서를…

Read More Read More

Up and Running for Protobuf

Up and Running for Protobuf

다른 시스템과 데이터를 주고 받는다거나 용량이 큰 데이터를 효율적으로 저장하기 위해서는 데이터를 압축하거나 다른 효율적인 방법이 필요하다. 인터넷을 통해 데이터를 효율적으로 주고 받기 위해 많은 사람들이 고민을 해 왔고 그 중 요즘 Defacto Standard로 사용되는 것이 Google에서 만든 Protocol Buffer(a.k.a Protobuf)라는 것이다. Protocol Buffer는 language 중립적이고 데이터를 Serialize할 때 쉽게 확장 가능한 구조를 제공한다는 특징을 가지고 있다. Protocol Buffer를 사용하기 위해서는 몇가지 설치가 필요하다. 먼저 Protocol Compiler(확장자 .proto 파일을 컴파일하기 위해 사용됨)와 사용하고자 하는 language에 맞는 Protobuf Runtime을 먼저 설치해야…

Read More Read More

향후 50년은 초지능을 가진 두뇌를 만드는 시대

향후 50년은 초지능을 가진 두뇌를 만드는 시대

몇 년전 부터 AI가 IT업계의 메인스트림으로 인식하고 있다. 이제 AI가 가져다 줄 변화에 두려움이 느껴지기도 한다. AI가 어떻게 동작하는지 기술적인 관점에서 바라보는 것도 재미 있지만 좀 더 큰 그림, 한 1km 높이에서 AI기술을 이루는 큰 블럭들을 바라볼 수 있다면 요소 기술을 접하는데 더 도움이 될 것이다. AI가 보편화 될 수록 관련 기술 생태계는 아래의 그림과 같이 구성될 것이다. 지금까지의 IT 또는 SW의 발전은 더 나은 계산기를 만드는 과정이었다고 보면 된다. 즉 더 나은 CPU와 이를 활용하는 더 나은 SW로 다양한…

Read More Read More

ChatGPT가 하는 것이 무엇이고… 왜 동작하는 걸까?

ChatGPT가 하는 것이 무엇이고… 왜 동작하는 걸까?

2022년11월 ChatGPT를 처음 접하던 날 내가 받은 인상을 아직도 생생하게 기억한다. 프롬프트 뒤에는 사람이 직접 입력을 하고 있다는 우스게 소리도 있었다. 내가 질문한 답을 기-승-전-결에 맞추어 군더더기 없이 깔끔하게 설명을 해주다니… 그것도 오류없이. 이게 가능하단 말인가! 더구나 프로그래밍 관련 질문에 Boilerplate Code를 곁들인 답을 뱉어 내는 것을 보며서 이제 정말 개발자의 종말을 보게 될 것인가란 약간의 두려움도 있었지만 ChatGPT가 내부에서 어떤 과정을 거치기에 이런 놀라운 결과를 만들어내는지 궁금해 지지 않을 수가 없었다. GPT 이전의 AI는 주로 수학적인 설명을 토대로 미래를…

Read More Read More

React의 Template(JSX)은 어떻게 동작할까?

React의 Template(JSX)은 어떻게 동작할까?

인터넷에 글을 보다가 평소에 음.. 그렇게 동작하는 군.. 하지만 내부에서는 어떻게 동작을 하는걸까 하고 생각하던 내용을 마주하게 됐다. 나의 궁금증을 99% 해결해 주는 내용이라 이해한 내용을 잠시 옮겨볼까 한다. 웹 어플리케이션을 개발하는 개발자들 사이에 React, Vue 등을 언급하는 것을 많이 볼 수 있다. 개인적으로 이런 프레임워크를 그리 선호하지는 않는다. 왜냐하면 히트곡이나 패션 아이템처럼 잠시 왔다 스쳐 지나가는 유행처럼 보이기 때문이다. 하지만 이들 근간에는 어떤 기술이 활용되고 있는지 파악해 놓을 필요는 있다. 그래야 유사한 형태의 프레임워크가 나오더라도 쉽게 이해할 수 있고…

Read More Read More