본문 바로가기

IT 공부104

왜 자바는 모든 것을 class로 처리하려는 것일까? (주절주절) 공부하면서 느끼는 제 개인적인 생각과 감정입니다... 자바는 클래스에서 시작해서 클래스로 끝난다. 처음부터 객체지향 설계 언어를 목표로 만들어진 언어라 그런가 싶다. 하지만 본질적으로 서로 다른 존재인 데이터 구조와 객체가 동등한 문법에 의해 만들어지는 것이 뭔가 불편하게 느껴진다. 데이터구조는 C언어의 struct와 비슷하다. 말 그대로 다양한 데이터타입을 묶어 개발자가 새롭게 정의한 데이터 타입이다. 대표적인 예로 직교좌표계의 점, 2차원의 벡터를 들 수 있다. 객체는 객체지향에서 말하는 바로 그 객체다. 객체를 정의하기가 쉽지 않지만, 객체지향에서 객체는 특정한 일에 특화된 작은 모듈이라 할 수 있다. 이때 그 구현은 외부로 드러나지 않아야 한다. 이것이 캡슐화(Capsulation) 개념이다. 만.. 2023. 10. 30.
함수의 본질과 컴퓨팅 사고력 1. 프로그램에서 함수의 중요성 함수는 소프트웨어의 본질이자, 소프트웨어라는 건축을 받치는 벽돌이다. 소프트웨어는 함수의 연속으로 구성되며, 함수가 다시 함수를 호출하는 구조, 즉 재귀적인 구조다. 함수는 정보 처리의 최소 단위다. 소프트웨어의 궁극적인 본질은 무수히 많고 다양한 데이터를 입력받아 일관된 방식으로 계산하거나 처리하고 그 결과를 받아내는 것이다. 따라서 함수를 설계한다는 것 자체가 컴퓨터를 통해 문제를 해결하겠다는 것이다. 결국 프로그래머란 함수를 설계하는 사람이다. 2. 컴퓨팅 사고력과 일반 지능 컴퓨팅 사고력에 관해 오해하지 말아야 할 것은, 컴퓨팅 사고력이 좋다고 해서 반드시 IQ가 높다고 볼 수는 없다는 것이다. 상관관계는 있을 지 모르겠다. 그러나 컴퓨팅 사고력은 순수한 지능적인 .. 2023. 10. 29.
RSA 암호 알고리즘과 정보이론 1. 기초적인 암호화 방법 암호화란 전달하고 싶은 평문을 다른 기호로 변환하는 등의 다양한 조치를 통해 평문의 내용을 숨기는 것을 말한다. 이 과정을 거꾸로 하면 복호화다. 직관적이며 기초적인 암호화 방법에는 전치나 매핑을 사용하는 방법이 있다. 전치란 문자 기호들의 재배열을 말한다. 매핑은 한 기호를 다른 기호로 바꾸는 것을 말한다. 어린 시절 누구나 암호를 만들며 놀아본 기억이 있을 것이다. 나 또한 초등학교 시절, 한글의 원리를 그대로 사용하는 대신 새로운 문자 기호를 만들어 암호를 만든 기억이 있었다. 어떤 친구는 글자만 재배열해 암호를 만들었다. 우리는 암호화의 원리를 몰랐지만 누구나 알 수 있는 직관적인 방법을 이미 알고 있었던 것이다. (물론 모두 복호화에는 실패했다..) 2. 정보 이론에 .. 2023. 10. 29.
비트(bit)와 정보의 실체 1. 컴퓨터의 공학적 실체 컴퓨터의 동작 원리를 비유적으로 표현할 때, 흔히들 "컴퓨터는 0과 1로 소통한다"는 비유를 든다. 물론 "물리적으로는" 틀린 설명이다. 0과 1이란 물리적 실체가 아니라 개념이기 때문이다. 컴퓨터 장치를 뜯어 봤자 0과 1은 없다. 전기들이 배선을 타고 흐를 뿐이다. 그러나 컴퓨터는 수학 이론으로 설계된 장치다. 컴퓨터 과학은 0과 1이라는, 아니 더 정확히 말하면, 두 가지 가능성 중 하나를 선택하는 정보의 최소 단위인 비트(bit)를 처리하는 기계다. 현대 컴퓨터는 단지 그 이론을 전기적으로 구현했을 뿐이다. 따라서 물리적 실체를 떠나 0과 1이라는 관습대로 해석하는 것이 꼭 틀린 것은 아니다. 물론 이 비트(두 가지 가능성)라는 녀석을 0/1이라고 부르든, true/fa.. 2023. 10. 27.