목록Computer/CS (53)
Machineboy空
4장. 구조적 프로그래밍 발췌 이러한 제어 구조는 뵘과 야코피니가 데이크스트라보다 2년 앞서 발견했는데, 이 두 명은 모든 프로그램을 순차(sequence), 분기(selection), 반복(iteration)이라는 세 가지 구조만으로 표현할 수 있다는 사실을 증명했다. 이 발견은 실로 놀라웠다. 즉 , 모듈을 증명 가능하게 하는 바로 그 제어 구조가 모든 프로그램을 만들 수 있는 제어 구조의 최소 집합과 동일하다는 사실이었다. 데이크 스트라는 편집자에게 편지를 썼고, 편지의 제목은 "goto문의 해로움(Go To Statement Considered Harmful)"이었다. 구조적 프로그래밍을 통해 모듈을 증명 가능한 더 작은 단위로 재귀적으로 분해할 수 있게 되었고, 이는 결국 모듈을 기능적으로 분..
1장 설계와 아키텍처란? 제이슨 고먼의 실험 정수를 로마 숫자로 변환하는 프로그램사전에 정의한 일련의 인수테스트를 프로그램이 통과하면 개발이 완료된 것으로 봤다. 1일차,3일차, 5일차에 TDD(테스트 주도개발)을 적용하고,2일차,4일차, 6일차에는 TDD없이 개발했다. TDD를 적용한 날이적용하지 않은 날보다 대략 10% 빠르게 작업이 완성되었다. 빨리 가는 유일한 방법은 제대로 가는 것이다.2장 두 가지 가치에 대한 이야기 소프트웨어가 가진 본연의 목적을 추구하려면 소프트웨어는 반드시 부드러워야(soft) 한다. 다시 말해 변경하기 쉬워야 한다. 이해관계자가 기능에 대한 생각을 바꾸면, 이러한 변경사항을 간단하고 쉽게 적용할 수 있어야 한다. 이러한 변경사항을 적용하는 데 드는 어려움은 변경되는 범..
그간 아무렇지 않게 언어를 선택해 왔다. 선택했다는 건 내 의지를 가지고 판단을 했다는 것이니 이 표현은 틀렸다. 당연히 Unity에서는 C#이 지원되니까 C#을 배웠고, iOS 앱을 만드려면 XCode에서 Swift를 써야한다고 하니 Swift를 배웠다. 스크립트 언어? 순간 TypeScript랑 착각하고는 공부한 적 없다고 했다. 이미 서류엔 javascript를 3개월 독학해봤다고 적어 놓고는 말이다. 상대가 무안주지 않으려 나의 실수를 짚지 않고 넘어간 것이라는 것을 깨닫고는 정말 부끄러웠다. 그래서 또 얉게 나마 탐구해보겠다. 왜 언어가 바뀌어 가고 있고 언어가 동작하기 위해선 어떤 절차가 내부에서 진행되고 있는지를 알아보겠다.컴파일 언어와 스크립트 언어의 주된 차이점프로그래밍의 작동 방식에 따..
문제요약조건에 맞는 요소를 출력하라. https://exercism.org/tracks/csharp/exercises/strain Strain in C# on ExercismCan you solve Strain in C#? Improve your C# skills with support from our world-class team of mentors.exercism.org난이도Easy풀이 포인트델리게이트 이해IEnumerable 형 특징 이해REVIEW 우선 파라미터에 들어가 있는 델리게이트 함수의 이름을 처음에 발견하지 못해 헤맸다.그리고 아직 IEnumerable형의 lazy 실행에 관해 익숙하지 않아서,List를 생성하고 조건에 맞는 값을 넣은 뒤 출력하는 방식으로 구현했는데,IEnumerable..
컴퓨터가 어떤 일을 해야하는지에 관한 것을 적은 기계어를 디자인하는 일은 굉장히 중요!a taste of low-level programming을 제공할 것 Keywordop codesmnemonicsbinary machine languagesymbolic machine languageassemblylow-level arithmeticlogicaladdressingbranchingI/O commandsCPU emulationlow-level programming4.1 Machine Languages : OverviewALU도 만들고 메모리 계층도 만들었다. 그걸 조립해 컴퓨터를 바로 만들 수 있지만 살짝 미뤄두고,우리가 컴퓨터로 무얼할지에 대해 먼저 생각해 보겠다.게임도 할 수 있고 글도 쓸 수 있고, ..
1) 1 - Bit Register /** * 1-bit register: * If load is asserted, the register's value is set to in; * Otherwise, the register maintains its current value: * if (load(t)) out(t+1) = in(t), else out(t+1) = out(t) */ CHIP Bit { IN in, load; OUT out; PARTS: Mux(a=gayout,b=in,sel=load,out=a); DFF(in=a,out=out,out=gayout);}2) 16- bit Register/** * 16-bit register: * If load is asserted,..
main memory unit = RAM(Random Access Memory)을 만들어 볼 것 computer's processing chips: based on combinational logiccomputer's memory logic : clock-based sequential logicKey ConceptCombinational vs sequential logicclocks and cyclesflip-flopsregistersRAM unitscounters3.1 Sequential Logic : 시간 단위가 있는 순차 논리 회로라는 개념how to computers do one thing after another지금까지는 input 넣으면 바로 output이 출력되고, 실행시간에 관한 생각을 안..
만들 것HalfAdderFullAdderAdd16Inc16ALU기본 개념, 가산기(Adder)란?컴퓨터의 기본 요소.논리 대수에 따라서 동작하도록 반도체로 만든 논리 소자를 사용하여 구성한 회로.입력값에 의해 불대수(boolean algebra)의 값이 출력되는 논리회로.기억 능력은 가지지 않는다.반가산기(Half Adder)전가산기(Full Adder)2진수로 나타낸 수들을 1비트씩 합하여 그 결과로 1비트의 합과 1비트의 자리올림(carry)을 발생하는 회로자릿수가 많은 2진수의 덧셈에서 어떤 자리의 덧셈을 할 때,낮은 자리로부터의 올림수를 고려한 2진 1자리의 가산기.일정한 수의 비트로 나타낸 수의 가산은 불가능자리올림은 신호로 출력 이상은 지식백과 정의인데 무슨 말인지 잘 이해가 가지 않아서 강..
