[CrashCourse] 알고리즘* (컴퓨터 과학 수업 13/40) 2022. 8. 31. [CrashCourse] 문장과 함수 (컴퓨터 과학 수업 12/40) 언어의 문장 구성요소와 구조를 다루는 규칙을 '구문(Syntax)' 이라고 한다. 영어라는 언어에도 문법이 있듯이, 프로그래밍 언어에도 동일하게 정해진 규칙이 있는 것이다. a=3이라는 문장을 보면, a라는 변수에 3이라는 값을 할당시킨다. 이를 대입문(Assignment Statement)이라고 한다. 변수를 사용하기 위해서는 초기화(Initializing)하는 작업이 필요하다. 초기화는 초기값을 정해주는 것을 의미한다. 우리는 ~한다면 이라는 조건문(Conditional Statement)을 달아줄 수도 있고, 조건에 따라 반복(while)해야 하거나 정해진 횟수(for) 만큼 반복해야 할 땐 반복문(Iteration statement, Loop)을 사용할 수 있다. 이러한 변수, 조건문, 반복문 등.. 2022. 8. 31. [CrashCourse] 최초의 프로그래밍 언어 (컴퓨터 과학 수업 11/40) 기계는 이진수 형식의 기계어로 명령을 받고 그를 수행한다. "00101110"에서 앞 4바이트는 Opcode(Operation Code, 명령 코드)로 명령을 내리고 뒤의 4바이트 1110은 2진수로 14번째 메모리의 값을 의미한다. 1940년, 1950년에는 이런 이진수를 이용한 언어가 아닌 더 높은 차원의 언어를 고안했다. 기계 친화적인 언어가 아닌 인간이 읽을 수 있는 언어를 생각했다.(more Human Readable) 위에서 설명하던 Opcode는 mnemonics(니모닉)이라는 간단한 이름이 지정되었다. 0010 --- > "LOAD_A 14" 하지만 CPU는 이진수만 이해할 수 있기에 문자 기반의 명령어를 읽고 자동으로 이진 명령과 일치하는 것을 조합시키는 프로그램이 필요했고 '어셈블러'가.. 2022. 8. 30. [CrashCourse] 초기의 프로그래밍 (컴퓨터 과학 수업 10/40) 직물을 만들기 위해 방직기를 사용하였는데, 일정한 패턴을 표현하기 위해 Joseph Marie Jacquard라는 사람이 펀치카드를 이용하여 옷감에 들어가야 할 열을 지정했다. 사람들은 이를 최초의 프로그래밍 방식 중 하나라 지칭한다. 프로그래밍은 보통 펀치카드나 플러그보드, 패널형식으로 이루어져 왔다. 추후에 메모리, CPU의 출현으로 정보나 프로그램을 메모리에 저장하고 이를 불러와 사용하거나 입, 출력을 하는 등의 방식으로 프로그래밍은 개발되어 왔다. 초기 프로그래밍의 경우, 전문가가 다루고 비용이 많기에 일반적으로 상용화 된 것은 패널 프로그래밍 방식이 있었다. 2022. 8. 30. [CrashCourse] 고급 CPU 설계 (컴퓨터 과학 수업 9/40) CPU 기능 효율성을 위해 캐시라는 개념이 도입되었다. 직접 RAM과 소통하면서 생기는 지연 등을 최소화하는데, 동기화를 하는 부분에서 dirty bits라는 개념이 등장한다. 어느 한 기능을 수행할 때, CPU의 효율적 가동을 위해 다음과 같이 명령어 Pipeline을 설계하였고 이를 통해 CPU의 능률이 향상된다. 하지만 이러한 Instruction Pipeline은 상호 연관성이 있는 명령어들의 충돌이나 조건부 명령어와 같은 위험을 가지고 있는데, 최근 사용되는 고급 CPU들은 예측 실행을 계산하고 Pipeline flush등을 통해 연산이 차질없이 진행되도록 한다. 사람들은 계속해서 분기 예측(Branch Prediction)에 대해 개발하고, 최근에는 그 예측도가 90%에 가깝도록 높아졌다고 .. 2022. 8. 26. [Java] 클래스, 클래스 상속과 메소드 오버라이딩 연습 package com.example.MyJavaProject; public class main { public static void main(String[] args) { Warrior warriorA = new Warrior(); warriorA.attack(); warriorA.weaponA = new Sword(); warriorA.attack(); } } class Warrior{ Weapon weaponA = new Weapon(); void attack(){ weaponA.attack(); } }; class Weapon{ String equipWeapon; void attack(){ if(equipWeapon==null){ System.out.println("무기가 없어 공격할 수 없습니다... 2022. 8. 24. 이전 1 ··· 6 7 8 9 10 11 12 다음