본문 바로가기

Compute

FUNCTIONAL PROGRAMMING 이 글은 , “함수 프로그래밍 입문” 이란 책의 0장을 읽고 정리한 글입니다. 関数プログラミング実践入門 ──簡潔で、正しいコードを書くために 0. [입문] 함수 프로그래밍 함수 프로그래밍에서 얻을수 있는 개선 코드 양이 적어진다 같은 기능을 가진 프로그램을 구현한다고할때 , 적은 행수로도 끝낼수 있다. 이것은 함수프로그래밍에서 “수학”의 개념을 적용 했기 때문 (수학은 고도로 추상화된 분야) 코드 양이 적다는것은 메인터넌스성이 높다. 최적화하기 쉽다 최적화는 많은 프로그래머가 노력을 들이는 부분 , 또 많은 부분을 컴파일러에서 자동으로 해줌 컴파일러가 최적화를 위해 사용할수있는 유용한 특징을 가지고 있을수록 좋음. 함수프로그래밍의 추상화 능력이 컴파일러의 최적화에 도움을 준다. 병행/병렬화하기 쉽다 CPU의.. 더보기
FUNCTIONAL PROGRAMMING IN SCALA . CHAPTER 1 1. 함수형 프로그램이란? 전제조건 – 프로그램을 순수 함수(pure function)들로만 구축한다는 뜻 (side effect가 없는 함수) . 변수를수정한다 . 자료 구조를 제자리에서 수정한다 . 객체의 필드를설정한다. . 예외(exception)를 던지거나 오류를 내면서 실행을 중단한다. 콘솔에 출력하거나사용자의 입력을 읽어들인다. . 파일에 기록하거나 파일에서 읽어들인다. . 화면에 그린다 이런 일들을 할수 없는 상태에서 프로그램을 짠다는것. 함수형 프로그램은 , 프로그램을 작성하는 방식에 대한 제약. 표현 가능한 프로그램의 종류에 대한 제약이 아님. 순수함수로만 이루어진 프로그램은 모듈성이 높아지고 , test, 재사용,병렬화,일반화,분석이 쉬워진다. 1.1 FP의 이점 (예제) class C.. 더보기
차세대 프로그래밍의 패러다임이라면..? 차세대 프로그램에 대해 혼자만의 상상을 이야기 해본다면, 아래와 같지 않을까 생각됩니다. 지금까지의 프로그래밍의 발전은 OOP가 그래왔듯이 현실의 묘사를 잘 해내는 언어로 발전해왔습니다. 때문에 앞으로도 그러한 방향으로 가는것은 자명한 일입니다. 현재의 주류인 OOP에서 내가 생각하는 부족한것을 말하라면 , 객체의 다양한 뷰라고 볼 수 있습니다. 예를들면 나는 인터넷에서는 아시모프 이지만 집에서는 김xx , 회사에서는 김상 , 술집에서는 손님 등등등 서로다른 이름으로 인식되고 대응되어 집니다. 나또한 다른 객체에 대해 항상 다른 모습과 다른 방식으로 입력과 대응(action-reaction)을 정합니다. 만약 이러한 객체의 상태와 관계를 프로그래밍한다고 생각한다면 지금의 다형성만으로는 한계가 있다고 생각.. 더보기
axiom과 논리 그리고 idiom과 패턴단상 전산학은 화학과 물리와 마찬가지로 이론에 기반을 두고 실험을 통해 이론을 개선해나가는 실험과학입니다. (전산은 실험과학인가?(Is computing an experimental science) 참조) 요컨데 우리가 행하는 소프트웨어 개발도 일종의 실험작업이라고 볼수 있습니다. 이론에 기반을 둔 알고리즘 및 기술을 이용해 새로운 제품을 만들고 그 결과를 다시 이론에 적용합니다. OOP에 있어서 디자인 패턴은 이러한 과정을 겪어서 나왔습니다. 객체지향철학을 기반으로 수많은 개발을 통해 효과적인 개발을 위한 best practice가 나왔으며 이 best practice의 공통점을 모아 객체지향 원칙(idiom)을 정리할수 있었습니다. 이 같은 발전은 마치 수학에서 공리를 기반으로 문제를 풀며 효과적인 연산을.. 더보기
Bravo for the dynamic runtime! http://blogs.sun.com/jrose/entry/bravo_for_the_dynamic_runtime 와우 !! .net 용 Dynamic Language Runtime이 완성됬다는 이야기이다. JVM에도 영향이 있을듯. 이 기사는 다시 번역해야겠다. ..continued 더보기
언어와 컴파일러 단상. 해석불가 , 판단불가 | 비결정(Undecidable) , 비형식 | 자연어 | 결정적 , (P , NP-Complete ) | 형식 춈스키 계층 언어 통사론(formal grammar) -- context-free grammars regular grammars | | 표현 CFG(Grammar of a context-free language) context-free languages regular languages | | 생성 Turing Machine - 생성 Compiler (결정방법 *BNF , EBNF) - 해석 Compiler 위의 내용은 컴파일러 이론과 계산 가능성에 대한 이미지를 간략하게 표현한것이다. 춈스키는 이해 될 수 있는 언어의 형식 구조를 계층으로 분류하였는데 그것을 춈스키 계층이.. 더보기
about computer science 대학원 생활에 대해 하고싶었던 말(김진수 교수님) about computer science 출처 : http://k2hlife.egloos.com/3435103 Computer Science/Engineering 연구 물 리학, 화학, 수학과 같은 자연과학은 신이 만들어 놓은 자연의 이치를 깨닫고자 하는 학문입니다. 진짜 신이 수소, 산소, 질소 등등의 각종 원소를 이용해서 물질을 만들게 하셨는지는 아무도 모릅니다. 단지 과학자들이 하는 일은 현상을 잘 설명할 수 있는 그럴듯한 가설을 만들고 그것이 현상을 제대로 설명하는지를 확인하는 일을 반복할 뿐입니다. 따라서 자연과학에는 "왜?" 그렇게 되었는지에 대해서 물을 필요도 없고, 단지 발견과 경탄만이 존재할 뿐입니다. 그러나 우리가 업으로 삼고 있는 co.. 더보기
Nonlinear Nonlinear 출처 : http://www.aistudy.com/physics/chaos/nonlinear.htm '선형 (Linear)' 과 '비선형 (Nonlinear)' 의 차이점은 무엇인가? 중학교 1학년 수학책에 나오는 1차식이나 1차함수들을 선형이라고 한다는 것은 이미 잘 알 것이다. '선형'이란 (그래프가) 직선으로 나타난다는 뜻이다. 1차식의 그래프는 (직)선형이다. 경제학이나 경영학을 공부한 사람들은 선형계획법 (Linear Programming) 이라는 말을 자주 들어 보았을 것이다. 카오스는 명백하고 간단한 운동을 하는 선형에서는 일어나지 않으며, 오직 비선형의 상태에서 문제가 된다. 이처럼 선형은 단순하다. 하나의 원인에는 하나의 결과가 있을 뿐이며, 결과를 보고 원인이 어떤 것.. 더보기
이제와서 깨닭는 컴퓨터 공학 컴퓨터 공학을 전공하려는 학생들에게 해주고 싶은 말이 있다면 "먼저 내가 배우려고 하는 ,배우고 있는 것이 무엇이며 어떻게 공부해야하는 인지 알고 있어야 한다." 입니다. 그 중 하나가 과학과 공학의 차이 그리고 과학적 방법론 입니다. 과학은 우리가 알고 있는 기초과학분야, 물리,화학,생물학...등의 자연 현상을 연구하는 분야입니다. 이것이 컴퓨터 분야로 오면 계산(compute,즉 계산 가능성,알고리즘,기호체계)과 컴퓨터의 개발(기계적 관점) 을 이야기합니다. 공학은 이러한 이론을 바탕으로 실제적인 응용가치를 만드는 모든 행위를 이야기합니다. 건물을 지을때 재료공학,물리학등의 이론으로 바탕으로 요구의 대한 최적의 건물을 만드는 행위라든지, 통신이론을 바탕으로한 이동 통신 회사의 휴대폰개발 행위등등. 이.. 더보기
IPSENTINEL 출처 : IP SENTINEL ipsentinel This program tries to prevent unauthorized usage of IPs within the local ethernet broadcastdomain by giving an answer to ARP-requests. After receiving such a faked reply, the requesting party stores the told MAC in its ARP-table and will send future packets to this MAC. Because this MAC is invalid, the host with the invalid IP can not be reached. 얼마전 전체회의 시간에 이쪽회사의 네트.. 더보기