2026년 2월 28일 토요일

독일 암호 기계 에니그마(Enigma) 동작 원리

Enimga = 수수께끼 = 2차 대전 때 독일 암호/복호 기계




에니그마의 특징 중 하나가 암호화와 복호화가 같은 방식인데 그대로 전류가 흐르는 방향만 바뀐다는 것이다. 고로 어떤 원문의 글자도 자기 자신으로 암호화 되지 않는다. 이건 약점이다. 그러나 회전판 3개의 초기 배치를 모르고, 글자를 칠 때마다 회전판이 돌아 연결 조합이 바뀌기 때문에 풀기는 불가능하다. 그런데 어떻게 암호가 풀렸을까?

2차 대전 때 연합군은 이 에니그마 기계도 입수하고 암호 책도 입수 했지만, 그 날의 초기 설정(암호 톱니 배치) 변경(그 날의 암구호 같은 것)을 모르니까 암호 해독이 힘들었다. 초기 설정 변경은 통신 초반에 2회 반복해서 보낸다. 이 2회 반복 때문에 결국 암호가 뚫리게 된다. 앞의 3글자가 2회 반복 된다고? 너무 뻔하잖아? 2회 반복해도 전혀 다른 문자열이 나온다.




※ 반이중 방식 : 송신할 때 버튼 누르고 말 다 한 후 "오우버(넘긴다)" 하고 버튼을 놓으면, 상대가 송신한 걸 받을 수 있음. 송신과 수신할 때의 전력의 세기가 다르기 때문에 안테나에 송신기와 수신기가 따로 연결 된다.

※ 전이중 방식 : 전화기처럼 양방향 통신이 가능한데, 전선을 1개(접지)/2개(1쌍)만 사용하기 위해 하이브리드 코일로 자기 신호를 죽여 스피커에 연결한다. 그러면 상대방 소리만 내 스피커에 나온다. 아니면 송수신 안테나 2개(주파수 대역도 2개), 송수신 전선 2쌍을 사용.

폴란드에서 암호 해독 기계를 만들었는데 독일이 에니그마를 업그레이드 (톱니 수가 늘어남) 하니 감당이 되지 않아 영국에 넘겼다. 영국의 동성애자 튜링이 더 강력한 암호 해독 기계를 만들었고, 결국 암호를 해독하게 되었고, 독일은 전쟁에 졌다. 문제는 독일군의 안일함에 있었다. 기계가 문제가 아니라 사람이 문제였던 것이다. 튜링이 만든 암호 해독 기계가 바로 우리가 사용하는 컴퓨터의 CPU의 동작 원리다. 튜링 머신이나 에니그마나 컴퓨터 CPU나 동작 원리가 비슷하다.

현재 상태 기억 + 뭔가 신호가 오면 → 다음 상태로 바뀌고 + 뭔가 동작 한다

확실히 인공 지능은 교사보다 더 많이 안다. 다만 말로만 설명하니 이해하기 힘들다는 것. 질문 하는 사람이 잘 질문 하고, 답변을 잘 이해하면 인공 지능은 최고의 스승이다. 예수가 말 한 미래에 올 보혜사(불교의 미륵 부처, 조로아스터교/유대교의 메시아)가 바로 인공 지능이 아닌가?

그리고 미국 극우 마가야. 남의 잠지에 관심 갖지 말아. 그건 그 사람 자유야. 동성애자가 너희들을 구했어. 동성애 하지 말라고 구약에 나오고, 유대교도였던 바울도 그렇게 얘기는 했지만, 예수는 그런 거에 관심도 없었어. 사람이 굶어 죽어 나갈 판인데 동성애 따위 신경 쓰겠니? 너희는 살인자야. 동성애자와는 비교도 안 되게 나쁜 애들이야. 극우는 전쟁만 일으킨다. 너흰 지옥행이다. 트럼프야 어린 애들 죽여 놓고 노벨 평화상 잘도 받겠다. 너도 윤석열과 같아. 정치 초보가 어떻게 대통령까지 되었을까? 후보자 만든 당원들이나, 거기에 투표한 꼴통 보수나. 그리고 미국/일본 정말 성진국답다. 결국 애들까지 건드리냐? 하기야 언제부터 성인이라고 정하는 게 무리지. 미성년자끼리 섹스 하잖아? 그냥 처녀막 없으면 다 같은 거야. ㅋㅋㅋ

법 왜곡 죄는 모든 재판에 적용해야지 왜 형사에만 적용하니? 민사 재판에서 뇌물 받아 먹고 싶어서? 이쪽에게 뇌물 받아 먹으면 저쪽에겐 화살 받아 먹는다? 부러진 화살 생각 안 나? 그러다 판사 죽는 수가 있어. 미친 집안에 걸려 봐. 사악한 판사 하나 보내고 나 천국 간다!

2026년 2월 1일 일요일

2026년 기준 살아 남은 컴퓨터 언어들

 1. 죽거나 죽어 가는 언어

  • Fortran (포트란) : 1957년 탄생 ~ 2000년대 초반 사망, 60~70년대 과학 계산 언어, 유지 보수로 명맥 유지
  • COBOL (코볼) : 1959년 탄생 ~ 2000년대 초반 사망, 금융 서버, 유지 보수로 명맥 유지
  • BASIC (베이직) : 1964년 탄생 ~ 1990년대 후반 사망, 교육용 → 파이썬으로 대체
  • Pascal (파스칼) : 1970년 탄생 ~ 1990년대 후반 사망, 교육용 → 파이썬으로 대체
  • Objective-C : 1984년 탄생 ~ 2016년 사망, Swift로 대체
  • Perl (펄) : 1987년 탄생 ~ 2010년대 초반 사망, 웹 → 파이썬으로 대체
  • Visual Basic (VB) : 1991년 탄생 ~ 2008년 사망, 윈도우 GUI 개발 대중화, C#로 대체
  • JScript : 1996년 탄생 ~ 2010년대 중반 사망. MS의 JavaScript 변종. IE 전용 기능(ActiveX 등)으로 웹 표준을 어지럽힘
  • Visual J++ : 1996년 탄생 ~ 2004년 사망. MS의 Java 변종으로 소송 패소. C#의 선배
  • ActionScript (Flash) : 1998년 탄생 ~ 2010년 사망, JavaScript + HTML5로 대체

2. 아직 명이 질긴 언어

  • VBA (Excel용 VB) : 1993년 탄생, 엑셀/오피스 전용 VB, 사무실에선 왕, 파이썬으로 대체 될 시한부 언어.
  • PHP : 1995년 탄생 ~ 2020년경 사망, 웹 70% 점유 → 파이썬으로 대체, 유지 보수로 명맥 유지
  • Ruby (루비) : 1995년 탄생 ~ 2018년 사망, 빠른 웹 → 파이썬으로 대체, 유지 보수로 명맥 유지

3. 생존 언어

  • Assembly (어셈블리어) : 1940년대 후반 ~ 1950년대 초반 탄생, 하드웨어 밀착형, CPU와 함께 딸려 오는 언어 
  • C : 1972년 탄생, 하드웨어 밀착형, CPU와 함께 딸려 오는 언어, O/S 제작 언어
  • SQL : 1974년 탄생, DB와 함께 딸려 오는 표준 언어
  • C++ : 1985년 탄생, 고성능 프로그램 개발 언어, O/S 제작 언어
  • Python (파이썬) : 1991년 탄생, BASIC / FORTRAN / Pascal 대체, 쉬운 문법, AI 언어로 부활
  • Java (자바) : 1995년 탄생, 서버 / 안드로이드 프로그램 언어
  • JavaScript (자바스크립트) : 1995년 탄생, 웹브라우저 언어
  • C# (씨샵) : 2000년 탄생, MS가 미는Java 경쟁 언어, C/C++ 문법 계승한 J++ 후손, Unity 게임 제작 언어로 변신
  • Kotlin (코틀린) : 2011년 탄생, 구글이 미는 안드로이드 Java 대체 언어
  • Swift (스위프트) : 2014년 탄생, 애플이 미는 아이폰 Objective-C 대체 언어

4. 신흥 언어

  • Rust (러스트) : 2010년 탄생, 메모리 관리가 위험한 C/C++ 대체 목적
  • TypeScript (타입스크립트) : 2012년 탄생, 변수 때문에 디버깅이 난감한 JavaScript 보완
  • Go : 2012년 탄생, 서버의 C++의 복잡함 + Java의 무거움 대체 + 쉬운 병렬 처리 목적

5. 대체 언어

  • JavaScript → TypeScript : 변수형을 강제 지정, 코드 작성 중에 오류 감지, TS→JS 변환
  • C/C++ → Rust : 비슷한 문법, 메모리 소유권으로 메모리 누수 원천 차단, 상호 호환
  • Java → Kotlin : 훨씬 간단한 문법, NullPointerException 원천 차단, 상호 호환
  • Objective-C → Swift : 완전히 다른 파이썬 같은 간단한 문법, C++ 성능
  • BASIC / FORTRAN / Pascal → Python : 더 간단한 문법, 더 강력한 능력, 거대 라이브러리
  • Java ↔ C# : 서로 베껴 문법이 비슷한 두 경쟁자는 아직도 여전히 싸우고 있다?
  • C++ & Java → Go : 파이썬 같은 간단한 문법, C++ 성능 + Java 생산성 + 병렬 처리

5. 문법 철학 (수식 같은 C/C++ 스타일 vs 읽기 쉬운 영어 문장 스타일)

  • 1940년대 Assembly : 기계어(숫자)에 대응하는 약어 나열하는 저수준 언어
  • 1957년 Fortran : 읽기 쉬운 문법, 과학 계산용, 천공카드 시절의 유산으로 줄 칸 수에 맞춰 쓰기
  • 1959년 COBOL : 읽기 쉬운 문법, 은행용, 천공카드 시절의 유산으로 줄 칸 수에 맞춰 쓰기
  • 1964년 BASIC : 읽기 쉬운 문법, 교육용, 줄 번호(10, 20, 30...) 붙여 코딩 한 적도 있음
  • 1970년 Pascal : 읽기 쉬운 문법, 교육용, C와 라이벌 문법, 중괄호 대신 단어 사용
  • 1972년 C : 수식처럼 읽기 피곤, 시스템이 망가져도 좋으니 개발자 마음대로 해 봐
  • 1974년 SQL : DB에 영어 문장으로 필요한 걸 질문만 하면 되는 언어
  • 1984년 Objective-C : C 스타일 문법, '대괄호'가 난무하며 설명문을 강요함
  • 1985년 C++ : C 스타일 문법, 객체 개념 추가했는데 너무 복잡함
  • 1987년 Perl : C 스타일 문법, 정규표현식 등 온갖 기호가 섞여 "쓰기 전용 언어"라 불림
  • 1991년 Python : 읽기 좋아야 고치기도 좋지, '들여쓰기'가 중괄호 대신
  • 1991년 Visual Basic (VB) : BASIC 문법 계승, 그리듯이 윈도우즈 프로그램 만들기
  • 1993년 VBA (Excel용 VB) : VB 문법 계승, 사무 자동화 언어의 대명사?
  • 1995년 PHP : C 스타일 문법, HTML 사이에 끼워 쓰기 좋게 설계된 웹의 감초
  • 1995년 Ruby : 영어 문장 스타일, 같은 결과도 여러 방법으로 표현 가능(인간 중심)
  • 1995년 Java : C 스타일 문법 계승, 모든 걸 객체로 만들라고 강요
  • 1995년 JavaScript : Java 스타일 문법 흉내, VB처럼 유연하고 엉성한 웹브라우저 언어
  • 1996년 JScript : JavaScript 문법 모방, MS의 독자적인 기능 추가로 웹 표준과 갈등
  • 1996년 Visual J++ : Java 문법 모방, 법적 분쟁 끝에 사장, C#의 모태가 됨
  • 1998년 ActionScript (Flash) : C 스타일 문법, 화려한 애니메이션 + 인터렉티브 웹 주역
  • 2000년 C# : C/C++ 계승, Java 모방한 MS 만능 언어
  • 2010년 Rust : C/C++ 계승, 안전하지 않으면 컴파일조차 안 시켜준다
  • 2011년 Kotlin : Java의 번거로운 문법 제거, 실수(Null)를 문법적으로 방어
  • 2012년 TypeScript : JavaScript 문법, 변수에 뭐가 들어가는지 명시하라고 강요
  • 2012년 Go : Python 같은 간단한 문법, 간단하게 빨리 성능 좋은 거 만들자
  • 2014년 Swift : Python만큼 읽기 쉬운 문법, 성능은 C++급, 안전하고 빠르게 만들자

6. 만능 언어 편집기

  • VS Code : Microsoft 제작, C#, TypeScript, JavaScript와 최고 궁합 ☞ 현재 세계 1위
  • Android Studio : Google 제작, Kotlin, Java와 최고 궁합
  • IntelliJ :  JetBrains 제작, Kotlin, Java와 최고 궁합
  • PyCharm : JetBrains 제작, Python 전용
  • Xcode : Apple 제작, Swift, Objective-C와 최고 궁합
  • Cursor : Anysphere 제작, VS Code 복제품 + AI 자동 코딩 및 조언 ☞ 초보에겐 최고네?

세월이 정말 많이 흐른 거 같네. 몇 년 전에 배운 거 같은데 이미 죽은 언어가 되었다니... 
잘 가라. 너희가 열등해서 없어진 게 아니다.
그리고 AI가 도움말도 주고 코딩까지 해 주니 과거의 그 무지막지하게 무겁던 편집기들 다 죽었군.