본문 바로가기

분류 전체보기

(39)
네트워크와 프로토콜 (1) 컴퓨터 하면 빠질 수 없는 내용 중에는 네트워크가 있다. 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 네트워크라고 하는데 이 컴퓨터들은 노드 간 연결을 이용하여 서로 데이터를 교환한다. 네트워크는 두 대 이상의 연결된 컴퓨팅 장치의 그룹을 말하며, 네트워크 안에는 또 다른 작은 네트워크를 포함하기도 한다. 하나의 네트워크에 있는 모든 장치는 중앙에 있는 하나의 허브에 연결된 경우가 많다. 이 두 장치는 서로 직접 연결 여부와 관계없이 하나의 장치가 다른 장치와 정보를 교환하는 영역에 있을 때 망으로 묶인다. 네트워크 계층 모델은 총 7가지로 나뉘는데 TCP/IP 모델을 기반으로 하며 국제 표준 기구가 제정한 OSI 7 계층 모델과 비교할 수 있다. OSI 7계층 모델은 물리 계층, 데이터 링크 계층, ..
소프트웨어 공학 소프트웨어 공학은 공학을 소프트웨어에 적용하는 것으로 소프트웨어를 개발하고, 운용, 유지보수 등을 서술적으로 다루는 학문이다. 보통 소프트웨어 하면 사람들이 프로그래밍이랑 관련이 깊은 것으로 알고 있는데 이를 벗어나 유기적으로 성장한 분야가 소프트웨어 공학이다. 소프트웨어 공학을 다루기에 앞서 프로그래밍 언어부터 얘기하면 프로그래밍 언어는 1950년대부터 나타났다. 데이빗 파르나스는 열쇠가 된 개념인 모듈성과 정보 은폐를 1972년에 소개하였고 이는 프로그래머들이 다루기 힘든 소프트웨어 시스템의 복잡성을 더 쉽게 다룰 수 있게 했다. 동시에 하드웨어를 관리해 주는 소프트웨어 시스템인 운영 체제가 소개되었고 최초의 운영체제는 유닉스였다. 소프트웨어 공학자가 되기 위해서는 프로그래밍에 관한 지식이 필수적인 ..
컴퓨터 해킹에 대하여 컴퓨터를 아무 문제 없이 좋은 프로그램을 개발하는 데만 사용되면 얼마나 좋을까? 안타깝지만 현실은 그렇지 않다. 현대로 와서 이러한 발전된 컴퓨터를 이용하여 악용해서 이득을 취하려고 하는 사람들 있다. 그 사람들은 바로 해커이다. 해킹은 다른 사람의 컴퓨터를 허가 없이 무단으로 침입하여 그 사람의 중요한 개인정보를 빼돌리거나 데이터를 엉망으로 만들 목적으로 특정 컴퓨터에 접속할 수 있는 권한을 얻는 것이다. 단순히 이런 악용 사례만을 해킹이라고 하지는 않고 광범위하게 이 용어가 사용되기도 하는데, 개인 정보 열람, 변경, 그리고 사용자가 의도하지 않은 동작을 하게 만드는 것 또한 해킹이라고 말을 할 수 있다. 해킹의 개념을 좀 더 알아보자면 초기에는 어떤 목적을 가지고 컴퓨터와 컴퓨터 간의 네트워크를 파..
프로그래밍 언어 프로그래밍 언어는 어떤 소프트웨어를 작성하기 위한 언어인데 다양한 종류가 있으며 고급언어로 분류될수록 사람이 사용하는 언어와 비슷한 면이 많이 나타난다. 초기의 컴퓨터는 이러한 프로그래밍 언어 없이 개발되었다. 프로그래밍 언어에는 시기별로 세대가 있는데, 1세대 프로그래밍 언어, 2세대 프로그래밍 언어 그리고 1950년대에 3세대 프로그래밍 언어가 작성되었다. 4세대 프로그래밍 언어는 3세대 프로그래밍 언어에 추가로 내부 컴퓨터 하드웨어의 상세한 부분을 더 도급적으로 추상화시키는 것을 목적으로 한다. 5세대 프로그래밍 언어는 프로그래머가 작성한 알고리즘을 이용하지 않고, 프로그램에 주어지는 제약을 사용하여 문제를 해결하는 언어이다. 대표적인 프로그래밍 언어부터 하나씩 살펴보자. 내가 대학교에서 전공을 배..
알고리즘과 자료 구조 - 2 저번 시간에 이어서 자료구조에 대해서 좀 더 알아보도록 하자. 자료 구조에 대해서 다시 정리해 보면 분류에 따라 나눌 수 있고, 형태에 따라 나눌 수도 있다. 저번 시간에 설명한 배열과 원형 연결 리스트, 이중 연결 리스트 등이 구현에 따라 나누어진 자료 구조 형태이며 이번에는 형태에 따라 나뉘는 자료 구조에 대해 알아보자. 가장 첫 번째로는 '스택'이라는 자료 구조이다. 이 자료 구조 형태는 어떠한 컵이나 과학 실험을 할 때 쓰이는 비커를 떠올리면 이해하는 데 도움이 된다. 컵이나 비커의 모양은 어떻게 되어있는가? 위로는 액체를 비롯하여 어떠한 물체를 위에서부터 부어서 담을 수 있는 형태이며 아래는 막혀있어서 예를 들어 밀도가 다른 흙을 넣는다고 가정하면 그 흙은 넣는 순서대로 밑에서부터 쌓일 것이다...
알고리즘과 자료구조 알고리즘이란 일련의 단계적 절차라고 할 수 있고 어떤 문제를 해결하기 위한 동작의 순서와 모임이라고 할 수도 있다. 다시 말해 문제를 해결하기 위해서 계산이 들어가는 과정에서 생기는 규칙과 절차를 알고리즘이라고도 한다. 쉽게 말해 계산 과정, 처리 과정의 순서 그 자체를 뜻한다. 이는 컴퓨터 프로그래밍에서 뺄 수 없는 중요한 것이다. 알고리즘은 영어로 된 것을 한국어로 읽었을 때 알고리즘이라고 발음이 되어 통상 사람들이 그렇게 쓰고 있는 것이고 이를 나름 한국어로 그 의미를 번역해 보면 산법, 계산 절차라고도 한다. 이 알고리즘은 원래 처음부터 알고리즘이라고 불리지 않았다. 9세기 페르시아의 한 수학자인 '무함마드 알콰리즈미'의 이름을 라틴어로 바꾸면 알고 리스 무스라고 할 수 있는데 이것이 알고리즘의 ..
컴퓨터 과학의 첫 시작 컴퓨터 과학 또는 전산학이라 불리는 이 학문은 계산 대한 학문이다. 컴퓨터 과학은 다양한 관점에서 볼 수 있는데 알고리즘, 계산, 정보에 대한 이론적인 연구에서부터 소프트웨어와 하드웨어 간의 상호작용으로 계산을 처리하는 과정을 구현에 대한 문제까지 다양한 주제로 이야기 해 볼 수 있다. 컴퓨터 과학은 크게 2개로 나눌 수 있다. 우리가 이론적으로 계산하고 기록하는 알고리즘 등과 같은 이론적으로 다루는 분야가 있고 다른 한편으로는 직관적으로 다룰 수 있는 하드웨어와 소프트웨어의 설계 및 구현과 같은 실용적인 분야가 있다. 컴퓨터의 이용 지구상에서 최초의 컴퓨터는 1946년 ENIAC라는 컴퓨터다. 그 후로 EDSAC, UNIVAC 등 더 진보된 컴퓨터들이 나왔고 그리하여 컴퓨터를 이용한 정보화, 정보산업의..