-
Notifications
You must be signed in to change notification settings - Fork 10
/
0525.txt
254 lines (254 loc) · 18.9 KB
/
0525.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
[음악]
woo
안녕하세요 폼이나 최근에 저한테 그런 댓글을 달아주신 분이 있어요
제가 자꾸만 버그를 만드는데요 어떻게 하면 버그를 줄일 수 있을까요
이런 얘기들 그래서 그 얘기를 좀 해 드리려고 하는데 이거 에 대한 답은
사실은 명백한 거는 없어요
굉장히 경험이 중요한 건데 왜 그런지를 설명을 드릴께요
근데 뭐 그거 를 떠나서 제일 마지막 쯤에 비디오 제 마지막 쯤에 그래도
하니 이 세 가지 정도는 언제나 확인한 습관은 줄이는게 좋다 라는 얘기도
드릴테니까 앞부분에 각설 싫으신 분들은 뒤로 적다 아니 돌려서 보시면 될
것 같아요
첫째 그럼 왜 사람은 개발자는 버거를 만드는가
이거는 똑같은 얘기에요 왜 사람은 실수를 하는 거랑 거랑 똑같은 얘기에요
그런데 개발자의 한해서만 말씀을 드릴게요 우린 사람이니까 개발자가
기본적으로 뭔가를 만들 때는 어떤 동작을 하는 프로그램을 만드는 과정이
잖아요
그러면 그 동작을 하게 만드는 것은 잘 생각을 해보시면 요
결과 적은 알고리즘을 만드는 건데 알고리즘은 만다면 자체가 우리 라면
끓일때 라면 뒤에 라는 끓이는법 있죠
물 몇 g 높고 모르구 모은 구봉도 9 먹는다
이거 제대로 써 있는 거야 솔직히 누구나 따라할수 있어요
근데 그 명령어를 뭐 라면 끓이는 법 가이드를 많은 사람들의 줘보세요
그 사람들이 그거를 제대로 따라 하는지 생각보다 따라하지 않고 이상한
일하는 사람들이 있을 거예요 그럼 아 그거 에 대비되어 있는 가이드 겁
두 나라는 걸 깨달을 실 거에요 그게 궁금하시면 최근에 모 100종 은
그 유명하신 문의하시는 못 백파 던가
그런 프로 있어요 그 풀어보시면 은 정말 안면도 못 그리시는 분들이
있거든
그런 얘기예요 자 개발자로 돌아올게요 개발자가 하는거는 그런 라면 끓이는
법 같은 거를 코드로 만드는 거죠
내가 설계하고 내가 만드는 거에요 그럼 내 코드는 그 라면 끓이는 법
같은 정형화된 가이드에 따라서 돌게 되어 있어요
내 프로그램을 다른 사람한테 줘요 그 사람이 그가 에 따라 그대로 해요
아니 우리는 가이드를 적어주신 않잖아 상식적으로 프로그램은 이렇게
동작하는 가이드를 잡혀 있으니까 그것을 따라하기만 하면 은 아무 문제가
없어요
그러나 프로그램에 버그가 생긴다는 건 뭐냐 내가 아닌 다른 사람의
입장에서 이 프로그램은 어떻게 사용할지 생각을 못하는 거예요
어느 순간 무슨 숫자를 입력하고 했어요
프로그램에서 나는 양수를 의미한 거야
자연수 근데 그사람은 0 을 넣거나 아니면 음수를 넣어 버리는 거에요
그럼 그 순간에 프로그래머 고장날 수 가 있죠
그럼 주문하는게 있구요 너는 왜 굳이 음
물런 냐 설문 난 몰랐지
아니면 혹은 책을 작동 하나 보고 싶어서 이룰 수 도 있는 거야
즉 이게 어떤 힘에 저는 프로그램으로써 제대로 동작하는 상황
그거를 해피 패스 라고 해요 행복한 길이자 행복한 과정
실제 cs 하시거나 고객상담 다른거 하시는 분들이 해피 패스 한계를 잘
아세요
아무 문제없이 시키는 대로만 따라 하면은 되는것
그러나 고객이 뭔가 하나를 이상한 일을 하는 거야
전원을 110p 꼽아 이름이 220 에 꼽는다 뭔가 전원을 짜르면 안되네
짤은 다거나 이런 일이 있을 때는 어떻게 상담을 할 거야 까지도 잡혀
있어야지 예외 상황 등을 처리할 수 있는 거죠
프로그램도 똑같다는 거에요 내가 정말 해피 패턴 조차 못 만드는
개발자라면 은 아직 개발자 로써 취직한 준비 조차도 좀 안 돼 있는
사람이 기네요
그걸 딴 잡고 내가 기본적인 기능은 구원할 수 있다
그러면 그 때부터는 이상한 버그들이 나오는데 왜 내가 그걸 못 자 왔을까
고민할 수밖에 없는 거죠
간단하게 요약하면 은 내가 내 기준에서 행복한 생각만 하면서 행복하게
코딩을 짧기 때문에 그래요 행복하게
금 나 외에 것에 안 행복한 게 뭐가 있냐
다른 사람이 프로그램 사용하는데 그 사람이 나보다 2분야를 잘 몰라
뭐 그냥 편하게 말하려고 저보다 멍청해 라고 얘기 할게요 진짜 그분이 뭐
지능이 낮다 이런게 아니라 나보다 그냥 2분야에서 멍청해 그 느 나는
안할 집들을 2분을 하시는 거죠 그러면 그걸 했을 때 프로그램이 여전
식으로 동작해야 되냐 아니면 뽀대 줘야 하냐 클래식 않아야 되냐
윤 개인의 선택이지만 버그를 고민하고 있다는 것은 고쳐야 할 거야 앙
거쳤던 얘기죠
그 첫번째 두번째는 이 사용자가 저보다 뚝뚝 하신분이 야 나는 전혀
생각도 못했던 사용 법인데
그런데 올바른 사용법 그분은 생각해 사회 마시려고 했는데 버그가 날
그러면 내가 그 사람보다 똑똑하지 못했기 때문에 나오는 버거
그쵸 나보다 멍청한 사람을 생각하는 것은 쉬워요
그냥 열심히 하면 돼요 왜냐면은 나주 멍청 있었거든
나두 그런 식 했었거든 그 옛날에 내가 얼마나 멍청 했는지를 생각해
보면서 아 나는 이렇게 멍청 했으니까
그런 사람들을 위해 이런거를 하자라고 있으면 그렇게 되는 거에요 근데
나보다 똑똑한 사람 것 은 제가 하기가 어렵죠 왜냐면 내가 모르는 데모
어떻게 과거를 돌아오는 못한 지적이 것도 없잖아 그래서 그런 경우에는
경험이 늘어야 지만 도움이 된다는 부분이 그런 부분이에요
그럼 5 프로그램의 초짜 마 학교가 졸업하고 이 기능 구현 겨우 하는데
내가 버그를 하나도 안 만든다 생각하시는 분들은 그냥 약간 어 현실 왜곡
하시는 분이에요
오히려 내가 버거를 많이 만들 수 있구나
그럼 만들었을 때 빨리 고쳐야지 걸 이해해야지 이럼 자세를 가지는 게
중요하죠
고개 두가지 사람에 대한 이해 뭐 내가 옛날에 못했던 나를 되돌아보고
나보다 잘하는 사람이 이런거 찾으면 배우고 이건 좋아요
세 번째 요건은 솔직히 누구나 했어야 하는건데
지금 컴공 교육이 많이 망가져서 못하는 것 같아요
참고로 좋은 콩 공격 받으실려면 poco 아카데미 오시면 됩니다
자 광고 했고 제가 작성하는 프로그램은 요 사람도 있지만 실제 이
프로그램을 돌리는 컴퓨터라 할
내가 사용하고 있는 언어 그 언어가 컴퓨터에서 어떻게 돕는 g
특히 내가 사용하고 있는 데이터 이 데이터 컴퓨터에서 어떻게 표현이 되지
알아야 하지만 나중에 누군가 이상한 일을 해도 그 문제가 안생기게 따는
걸 알죠
즉 제일 중요한 것은 또 우리가 이제 공부하는 사람으로서 학교를 졸업한
컴퓨터 풀어낸 공부를 했다면 은 알아야할 것들이죠 컴퓨터구조 컴퓨터의
데이터 표현법
이것을 알면 은 최소한 학생 수준에서는 할 수 있는게 데이터 풀 뽑 잘
알았고 이 데이터가 이렇게 표현되는데 내가 프로그램이 하면서 그 생각을
못하고 작성을 한 거야 그러면
아는 사람이나 아니면 그냥 일반 사용자도 사용할 때 망가질 수 있겠죠
그거 그리고 아까 말했던 나오다 똑똑한 사람들 다 보다 멍청한 사람들이
이해하는 것 그 세가지 요 근데 셋중에 가능한 2개는 컴퓨터 이 아는것
당연히 컴공부 1 도중에 해야죠
내가 옛날에 멍청해 생각하면서 하는거 그것도 당연할 수 있어야죠
그걸 못하면 그냥 나쁜 사람이지 내 소시적 생각 못하고 남아 잘난 척하는
사람이죠 어떻게 보면 좀 고렇게 하면 그건 정리가 돼요
다 이거는 굉장히 주 가 저의 굉장히 뭐 그럼 군 든 느낌 그런 느낌이죠
자세를 일단 말씀드렸어요 그리고 이 자세라는 것은 결과적으로 내가 과거에
했어야 하는 것들
컴공 애쓰면 컴퓨터 잘하고 내가 옛날에 오르던 사람이었을 때 그거 그리고
배우는 자세 그리고 내 코드는 내가 모르는 것들이 이만큼 있기 때문에
언제든 버 가 나올 수 있고 버그가 나오면 고칠 수 있는 자세 그 자세는
잡아야 돼요
참고로 말씀드리면 개발해서 포 씨니어 가 도 마찬가지고
중요해서 마찬가지고 버그 꽂히는 시간이 기능 만드는 시간에 거의
비슷하거나 그 이상이 들어갈 수밖에 없어요
그게 아니고 나는 기능 작성에 99% 의 시간을 쏟아 붓고 있다
그럼 너는 버그로 엄청 만들고 있는 사람이고 이 버거를 누군가가 고쳐주고
있는거예요
다른 사람들도 고마움은 살아야 되요 자 잘해 는 여기까지 됐어요
포프 tv 를 주로 자세한 얘기하죠 그러나 제가 교육도 많이 했고 제가
실무에서도 많이 하면서 사람들이 굉장히 많이 만드는 버그 그 이유 한
3가지 정도 객관적으로 들어 드릴 수 있는 거 고 걸을 말씀을 드릴게요
요새가 애정도 아시면 그래도 최소한의 확인 안하고 넘어갈 수 있고 버그가
있는지 없는지
요게 되면요 글들 먹어요 이거도 자 너는 아직 주니어 도 안 되는
사람이야 사실을 주니어 프로그램 어도 뭐냐
첫번째 바운더리 케이스 경계 케이스를 반드시 확인한다
어떤 왜냐면요 이래서 뽀 문을 돌려요 0부터 10보다 작을 때 까지
그러면 언제나 테스트 해야 되는거 0 에 있는 데이터가 제대로 작동을
하냐 - 레이는 작동을 하냐 이래 있는게 작동을 하냐
아까 10가지 라 그랬죠 10보다 작을 수도 있고 아니면 10보다 이하인
경우로 테스트를 뜻이 있어요
그래서 10 을 테스트해 10을 10 테스트하고 9 테스트하고 10일까지
도 테스트 하는게 좋아요
그래서 언제나 어떤 범위의 데이터가 있으면 그 범위 경계 거기서 사람들이
실수를 진짜 많이 젖었어요
특히 초보자들은 왜냐하면 은 뽑는 같은거 작성할 때 보다 작거나 아니면
작거나 같을 때 까지를 작성을 하는데 그 생각을 잘 못하는 거예요 아니면
배열 같은 뭐 10개로 잡았는데 실제 는 배열 인덱스가 9 자나 마지막
께 듣기 웬만한 언어에서는
그런 경우에 그걸 못 잡는 거예요 그것뿐만이 아니라 이거는 약간
데이터형을 알아야 되는 곳도 있는데 언 쌓인 드 인 트 같은거 작성할 때
포문을 10부터 0 까지 돌렸는데 - 1 되어 멈출 줄 알았거든
데이터 표현 상 - 일이 안되요 그저 무한 루프에 빠지는 경우가 있어요
그런 경우 들 이거는 전부다 경계 체크만 잘하면 해결할 수 있어요
이 경계 체크로 나오는 문제 정말 많이 봐요 두 번째 요건은 데이타의
관한 거에요
내가 사용하고 있는 데이터가 있잖아요 인테 젖 은 언사 인데 인 트 드
스 트림 이든 요런 데이터가 표현할 수 있는 다른 값들을 넣어 봐야 되요
예를 들어서 제가 열거형 대신에 옛날에 이런 비교 만든 적이 있어요
열거형 대신에 문자를 사용해서 사용자 입력을 많아요
그럼 나는 사용자가 그냥 abcd 중의 하나를 넣어 줄 거라고 생각하고
작성한 코드의 라는 코드로 그렇게 작성을 했고 나중에 누군가 그 코드를
변경할 수도 있고 호출하는 코드를 사용자가 잘못된 입력을 넣을 수도 있죠
그래서 애플 라는게 들어왔어요
왜 프가 들어올 수가 코드가 이상하게 작동하는 거야 뭐 d 처럼 작동
한다거나 abcd 에디 그런 문제가 생기는 거에요
그렇기 때문에 내가 사용하는 데이터 타입 2 타입이 표현할 수 있는 값이
뭔지를 고민을 하고 내가 생각하며 해피 패스가 아닌 값들을 넣어 보면서
테스트를 해보시는게 좋아요
그래서 그의 깨지는 게 보인다 그러면 그 순간에 이제 그 거야 방지책을
만들거나 아니면 프로그램 종료 시키거나 그것도 방식 중에 하나죠
그런 식으로 갈 수 밖에 없어요 전세도 마찬가지에요
언 쌓인 드 인 트 인 트 범위가 달라요
그리고 - 표현에 플러스 편이고 달라
차 타이거 캐릭터 라고 생각하게 사실은 전 수용 이에요
이것도 모르시는 분들이 있죠 제대로 공부한 한 거에요 그거 또 언 쌓인
등의 싸인회 달라지고 범위가 뭐냐 내가 사용하는 갑 이 함수에서 기대하는
값의 범위가 뭐 경부터 5배까지 다
그럼 뒤 지언 4인의 일당 인트를 사용을 해서 그걸 망 같은 이유는 없는
거거든요 따른 이상한 값이 들어오게 최대한 내가 필요한 값에 각 따온
자료용 의 범위를 정해 두고 그걸 넘어갈 때 어떻게 할지 그 고민도 해야
되는 거예요 그럼 같이 외부에서 들어올 수 있다면 테스트 해보는게 좋아요
경기 k 싼 느낌이 비슷하죠 근데 이거는 경계 보다는 어떤 데이터가
표현할 수 있는 범이 값의 종류
그렇게 생각하시면 좋을것 같아요 자 그건 됐고 뭐 참고로 말씀 드리면 좀
적어 에 대해서 그 플러시 나 더블 같은거 있잖아요
그것도 살 표현할 수 있는 범위가 다르고 유호 숫자 이게 달라요
그거 필요 씨와 아카데미의 수학과목 쓸수는 100% 하시죠
그거 안 하신 분들은 잘못되게 썼고 잘못도 우리 만드는 경우도 있어요
어쩜 그 두번째 세번째 요고 옛날에 비디오 만들었어요
널 체크 에 관해서 널 가능한 게이터 용 어떤거 에서 널이 들어올 수
있냐 없냐 에 대한 판단이 있어야 되요
만이가 어떤 자료 및 들어왔어요 이 자룡 은 당연히 참조 연기 때문에
널이 가능해요
근데 내 함수에 들어오는 순간 내가 널이 될 수 있냐 아니냐 라는 결정을
함수 마다 내려줄 수 밖에 없거든요 근데 그게 아니라 모든 암에서 널이
들어올 수 있다
널이 들어오면 함수가 작동을 안해 이거 뭐 어떻게 해낼 수가 없는 거야
그러면 널 체크를 안에서 예외를 던지나
아니면 널 체크 소위 턴을 1 아니면 업체 까 아무것도 안하고 까 널
채널을 캐치해서 익셉션 지지도 않고 위탄 하지도 않고 뭐 예외 던지고
이런 여러 가지가 있는데
그런거는 어쩔 수집 프로그램 얻을 끼리의 규약을 정할 수 밖에 없어요
예외처리 하는거 이런 2 시스템의 경계가 바뀔 때 해라 라는 말에 제가
강의 중에도 많이 하거든요
널 같은게 들어 올 때 얘가 너 어디 가능한지 아닌지 그 판단이 100%
되기는 돼야 돼요
중요한 점은 그 함수를 호출하고 그 함수에서 예외도 던지지 않고 자동으로
크래쉬 뭐 것들 덜 이해찬 예외적 보통은
그거를 나지 않고 그냥 문제를 거 삼키고는 계속 진행을 되겠다
그럼 진행이 된 순간에도 원래 함수를 호출한 사람의 의도와 동일하게
함수와 작동을 해야 되거든요
그러긴 진짜 어렵거든요 그런 상황까지 생각을 한다면 은 내가 널 체크
제대로 안하고 너에 대한 결정 제대로 안내로 났어요
에 나오는 버거도 엄마 뭐지 그래서 이런 널 같은 것 자체가 아예 소용이
안되게 하려고 아님 이런거 실수를 막으려고
시샵 파 린과 부터는
널 업을 레퍼런스 타입인가 그런게 들어왔죠 그래서 그런것도 이제 업계가
나가는 방향이 에요
널 안되게 데이터 구조 잡는 것들 널 되는거 따로 만드는 것들 이런
것들이 원아 우리가 많은 실수를 받기 때문에 그쪽으로 가고 있는 거예요
그 툭하면 널 포인터 이란 하시는 분들 이런 분들은 너를 어떻게 처리
해야 되는데 그걸 좀 잘 공부하시는게 좋아요
어디서 공부할 지고 하시면은 poco 아카데미의 개체 지향 프로그래밍
과목 있거든요 거기서 제대로 확실히 정리를 해 드렸어요
물론 다른 과목들 입문 과목이 라던가 뭐 c 플러스 플러스 과목에서 도
설명들은 다해서 올바른 예외 처리 방식 이런거 그러나 결과도 예외가
무엇이고 예외가 정확해 어떻게 분류가 되고 이런 예외 추이를 올바르게
하는 법 업계에서 한 90% 는 말던 들은 얘기 해요
그 어깨가 내 어깨 함께 합쳐서 그것을 좀 제대로 정리해 놓은 과목이
거기 겠네요
그래서 고 또 광고를 좀 빠지는데 어쨌든 요약을 할게 응 요약을 아심
들겠다 이거 어떻게 하지
자 처음에 내가 버거를 만드는 이유
그거는 나는 페피 패스만 생각하기 때문이다
내가 어떤 기능을 만들고 난 다음에는 딱 모두를 스위치 해서 아 이제
모를 뽑아낼 수 있는지 고민해 된다는 마음가짐으로 바뀌어야 되는데 그게
자세 적으로 보면 할 수 있으려면 은 내가 컴퓨터에 대해서 잘 알아야
되고 데이터가 어떻게 표현 되는지 내가 소싯적에 무엇을 몰랐는지 잘
기억해서 그런 사람들을 위해 대책을 세워야 되고 나보다 뛰어난 사람들
나는 아직 모르는 것과 알고 있는 사람들
그 사람들은 뭔가 버그를 찾을 거에요 제 버거를 그럼 그때 그 버그를
빠르게 고추 9 사람들이 알려주는 내용이 뭔지 이해할 수 있는 그런 것들
그런 자세가 3가지가 필요하고 그 자세는 경험 따라 특히 마지막 거는
경험 따라 쌓이는 거기 때문에 시간이 필요할 거예요
처음 기계는 신경쓰면 되시는 거고 하지만 2 거기가 짓 가기 까지도
우리가 쉽게 볼 수 있는 세 가지 것들이 있다 3가지 고칠 수 있는거
하나가 언제나 경계 케이스 테스트 하는거 두번째가 내가 원래 의도했던
값을 넘어서 지만 데이터가 표현할 수 있는 값들 그런거고 테스트 해보는
것 그리고 세 번째가 널 포인터 같은거 이거는 비교 1 에서 어떻게
설명을 요약해서 하긴 어려워요 그래서 제 비디오 중에서 널 체크 관련한
비디오들 고른 것 좀 보시거나 아니면은 제대로 배우실 내면은 poco
아카데미 1
객체지향프로그래밍 과목을 들으시면 됩니다 라는 말로 오늘 길고 길었고
말도
빨랐던 비디오를 마치겠습니다 포프 였읍니다