쉐도잉 연습: People Are Mad They're Told to Learn - 영상으로 영어 말하기 배우기

연습 모드 선택

각 모드는 전체 화면 연습실로 열립니다.

194 문장
문장이 너무 짧거나 길면 Edit를 눌러 조정하세요.
1
So I was, you know, surfing on the old Twitters, and I saw this tweet that wrote a practical introduction to SimD using real examples from Ghosty,
2
and I thought, hey, that's pretty cool.
3
But here's the thing, is that often my projects, I don't really feel like need SimD anywhere.
4
In fact, I took a flame graph of the game I'm making, and only 0.83% of the entire time, I'm actually in the update function.
5
I don't really feel like I have a huge need, you know, to learn the old SIMDs, whatever.
6
Hey, cool post though.
7
But then the next day, this got posted.
8
My SIMD post was on Hacker News
9
and the general hostility towards understanding how computers work and owning your own outcomes is really depressing.
10
A large amount of people seem to simply have the attitude that they hope someone else will pay their bills for them.
11
It can't be that bad, right?
12
The vast majority of developers have zero need for learning SIMD.
13
Why mislead them and make them feel like to be a real developer?
14
You have to know it.
15
what?
16
So an article about SIMD is making people feel like, what am I reading?
17
So obviously at this point, I had to go and actually learn SIMD because, you know, whether you like this or not, I've never actually used SIMD in any sort of practical use case.
18
I've understood what it was.
19
I've called functions that have been SIMD themselves.
20
I have just never personally hand wrote anything to do with it.
21
So I thought, hey, given the fact that Hacker News hates it, I probably need to give this a shot and learn about it.
22
So today you're going to A, have to learn about it, but B, we got some hot takes, okay?
23
So I got to talk about this whole thing.
24
Because honestly, why are you misleading them, Mitchell?
25
Also, just in case anyone's wondering, I'm not going to make the joke that everybody thinks I'm going to make involving SimD, okay?
26
Not going to happen.
27
And I'd also like to say thank you to the sponsors.
28
Vibe Coders, silence.
29
Someone who's worked in enterprise is speaking.
30
You know, simple OAuth sign-in's not that bad to program.
31
For real enterprise applications that need single sign-on, pass keys, user management, roles and permission, enterprise readiness, and passwords, and recovery,
32
that's a little bit more difficult.
33
And that is where WorkOS comes in.
34
WorkOS is trusted by a lot of the top companies, OpenAI, Anthropic, Cursor, and a whole lot more.
35
But not only that, it's free for your first million users.
36
So that means for you, that is 999,999 free seats available.
37
Pretty much no matter what backend you have chosen, there is an SDK available for you.
38
So go check out WorkOS at workos.com.
39
Links in the description.
40
So the article's called Everyone Should Know SIMD.
41
Now, obviously this became the immediate focal point.
42
The fact that he said everyone should know SIMD, people just got pissed off.
43
How dare you say everyone? and it's just like, okay, here's a great concept.
44
And honestly, it would be really good.
45
The more people know when programming, right?
46
I don't think anyone should ever argue that everybody should try
47
and attempt to know as much as possible so they can make the best quality software out there.
48
And so when someone says, Hey, everybody should know this.
49
It's like, okay, I mean, maybe I should know this.
50
But instead, people were genuinely upset about that.
51
Good article, but I wouldn't start off with a bold sentence such as SIMD can be simple to understand.
52
And there you go.
53
That's the second big one.
54
People hate the fact that he calls it simple.
55
Just read the article though.
56
SIMD has a reputation for being complex.
57
I've met many a good software engineers who dismiss it as something too complex to learn
58
or a niche optimization meant only for the highest performance software, not useful in everyday programming.
59
I think that's wrong.
60
SIMD can be simple to understand.
61
And there's a lot of versions of that comment.
62
It was all over Twitter as well.
63
Like, how could you say that everybody should know something?
64
Or how could you say it was easy or simple to understand?
65
It's complex.
66
And it's funny because by saying it that way, his first line was, in fact, kind of made obvious.
67
So me, who's never really understood what SIMD was, I figured, you know what?
68
Why don't I learn what SIMD is?
69
Why don't I give it a try, come up with a quick problem, and see if I can make something disproportionately faster, and then I can judge.
70
Is SimD difficult?
71
Is it some magical beast?
72
Or really, was that all that bad at all?
73
All right, so let's go to the white board.
74
Oh, gosh.
75
Oh, Dario.
76
Dario, stop doing that, Dario.
77
Don't do that.
78
Okay, here, hold on.
79
That's the wrong one, wrong one.
80
So I thought, what could be a good SimD project?
81
Well, SimD, you want to do some action that you need to do over a long for loop,
82
but you have to do like the same comparison a bunch or some same operation over and over again.
83
At least that's what I thought in my head.
84
So I thought, okay, a good project would probably be, I have these long log files that I want to be able to find the individual logs out.
85
And I want to be able to go over this whole list.
86
And you know, you just generally have to keep doing this over and over and over again.
87
And it doesn't really matter how long this line is.
88
It just matters that, yes, we just have to do this over and over again up until the, you know, slash end.
89
And again, I'm not gonna make the joke that everybody thinks I'm gonna make.
90
So I figured I would just create a program
91
that would find each one of these new lines and be able to parse out this delicious JSON.
92
I dropped the actual parsing of JSON, but instead just looked for the new lines
93
because I wanted to see how much faster could I make the new line looking.
94
Next, I actually had to learn what SIMD was.
95
In the most simple sense, effectively, you can operate instead of on a singular value, say X, you operate on a vector, right?
96
So pretend you have a vector of X, Y, Z, you could operate on all of these at once.
97
Let's just say you wanted to compare, say, finding a new line.
98
Well, what I'd have to do is I'd have to load up a vector with three new lines, kind of like my example, and then in one single CPU operation now this is not
99
a single cpu cycle cpus are like magic to me i have no idea what's going on underneath there
100
but one i'm just going to call it an operation a
101
single operation can compare this vector to this new line
102
and then it can produce out for you a new vector
103
that's going to say hey this is uh the new lines
104
no new line in the first position there was a new
105
line in the second position there there was no new line in the third position.
106
So I can actually take that and go, okay, was there a new line?
107
Oh, there was.
108
That means I need to find out where the new line was within my vector, and then I can return that.
109
And that's because SIMD literally stands for single instruction, multiple data.
110
And you can see that right here.
111
You can see the fact that I have multiple data and I'm doing a single instruction.
112
Are these equal?
113
So I didn't really know how to do that, but I just followed exactly what was inside the blog post.
114
First, I have to create the constants and initialize any vector stuff.
115
I have to loop over the input one vector chunk at a time.
116
I perform the comparison.
117
I reduce it down to something that I can actually use.
118
And then I just handle the remaining bits at the very, very end.
119
That actually feels, well, pretty straightforward.
120
So this is the naive implementation.
121
This is how I would have implemented it if I did not use SIMD.
122
I'm gonna go over the entire data starting at some point, and I'm gonna go and just say, hey, are you a new line?
123
And if you are, then this is the spot.
124
Else I say, hey, no new line found, the end.
125
This is your very classic index of approach.
126
Then of course, I just created something to look for all the new lines and just go over all of them.
127
I'm sure there's better way of testing the code.
128
This was good enough for me.
129
And when I had run the program, as you can see here, it would take about 1.54 seconds.
130
Okay, not that long.
131
And this is the SIMD version.
132
Yes, it is a lot larger.
133
It's a little bit more tedious to do, but when you break it down into the five steps, it's actually pretty simple.
134
Step one, the broadcast part.
135
Broadcast just means I need to create that constant.
136
Remember how I talked about this new line constant?
137
Well, I do it right here.
138
I go, okay, I need to create effectively a byte array that's lanes big.
139
Lanes in this case is how many bytes can I fit in my SIMD operations?
140
SIMD turns out to be kind of CPU dependent my CPU can do 256 bits of SIMD operations.
141
So I can do effectively 16 of them at a time if they're byte wide, meaning they're eight bits wide.
142
So this is my little array, 16 eight bit items.
143
Then I just simply create 16 new line bytes and whatever value that is, I think it's hex A.
144
Hex A, new line.
145
Okay, I'm a genius.
146
Actual genius of useless information, of course.
147
Number two, instead of iterating, say one byte at a time, I iterate lanes by data time lanes, of course, is how big my Cindy operation is.
148
In this particular case, it's 16.
149
So I'm doing 16 bytes at a time, instead of one byte at a time.
150
From there, I actually just create my little value array, I just slice off 16 bytes from my array and go, okay, you are now a SIMD vector.
151
From there, I just simply see are these equal, I take all my new lines
152
and compare to all my values in like one single operation instead of doing that little tight for loop.
153
It's just lit I'm doing 16 operations at once.
154
It's kind of cool.
155
Extract most significant bits just really checks for any values that has a one in it.
156
Since all my values should equal zero, if there's no new lines, if there is a new lines, one of them will equal a one, it will grab out that most significant bit.
157
And by doing a cardinality check, if it's not zero, if they're not all zeros, then I have at least one one, then I need to go there and find
158
that one once then I have to manually go through my little SIMD vector and I have to go, okay, which one of you are one and then the first one I find, that's where the new line is.
159
If I don't find a new line, I just add lanes to the end of end.
160
So I'm just incrementing it 16 at a time.
161
So at the very end, you have to do this, which is kind of funny.
162
It's called the scalar tail, which makes a lot of sense if you think about it.
163
Let's just say you have seven bytes remaining.
164
Well, you can't create something that's 16 long from seven bytes.
165
Okay, so then instead, I have to just manually walk the remaining seven.
166
And by doing it that way, if I simply just run this, you can see it's like massively faster.
167
And so yes, am I going to be using SIMD anytime soon?
168
Probably not.
169
I have virtually no problems with performance inside the game I'm making.
170
But now I kind of know the shape I need to have.
171
And now I see why I'm gonna want to use structure of arrays versus array of structures,
172
because there is a huge possibility I could have some mega wins and some future performance optimizations.
173
And honestly, it kind of feels cool.
174
I have to say, it does feel kind of neat.
175
So should everybody know about SIMD?
176
Yeah, why not?
177
It took me an hour to go really learn everything and program up an example and debug it a little bit, not that bad.
178
You can do, Chat Shippity can tell you all about what you need to do.
179
It's actually pretty straightforward.
180
You can ask infinity questions.
181
At the end of the day, which one would you rather have?
182
Maybe a little too much knowledge, knowledge that you don't often use or don't need to use, and you just simply kind of disregard it, but you have it kind of floating in the back of your head,
183
like Dykstra's shortest algorithm, just floating in the back of my head, okay?
184
Priority queue.
185
Or would you rather be this guy?
186
The vast majority of developers have zero need for learning SIMD.
187
Why mislead them?
188
At the end of the day, I'd rather work with the person that wants to know more.
189
I'd rather be the person that wants to know more.
190
And if I never use SIMD and knowing this was completely useless throughout my entire life, I'm happy I know it.
191
The name is, did you know that Go 1.6 right here, as you can see right here, new experimental SIMD, ArchSIMD package?
192
Did you know that Go, even Go, it now has SIMD support?
193
Obviously, you know what that means, right?
194
That means we can sim these nuts on your face again.

앱 다운로드

유창하게 말하는 데 필요한 모든 것

AI 발음 평가문장마다 점수 확인
IPA 발음 연습모든 소리 마스터
단어 학습나만의 단어장 만들기
단어 게임놀면서 외우기

같은 채널

FOR YOU

추천 영상

이 레슨의 어휘와 말하기 포인트

이 B2 수준 말하기 레슨은 영상 “People Are Mad They're Told to Learn”을(를) 바탕으로 합니다. 가장 자주 반복되는 단어는 다음과 같습니다: Simd, byte, vector, operation. 이 영상에는 섀도잉할 문장 194개와 단어 2368개가 있습니다. 말하는 구간의 길이는 11:30입니다. 화자는 분당 약 206단어로 빠르게 말하므로 연음과 약하게 발음되는 소리가 많습니다. 단어의 83%가 영어에서 가장 많이 쓰이는 3,000단어에 속합니다. 나머지는 연습 전에 미리 확인해 두세요. 전체 194문장 중 33문장이 질문이어서 의문문 억양과 짧은 대답을 연습하기에 좋습니다.

이 영상의 핵심 어휘

영상에서 가장 어려운 단어 15개를 발음, 뜻과 함께 정리했습니다.

단어발음뜻
byte 명사/baɪt/바이트
vector 명사/ˈvɛktɚ/벡터
cardinality 명사/kɑɹdɪˈnælɪti/집합의 크기, 농도
scalar 형용사/ˈskeɪ.lə/스칼라
hostility 명사/hɑˈstɪlɪti/적의, 적대
chunk 명사/t͡ʃʌŋk/조각
singular 형용사/ˈsɪŋ.ɡjə.lɚ/단일(單一)하다, 유일(唯一)하다
naive 형용사/naɪˈiv/순진하다, 우직하다
queue 명사/kju/줄, 대기줄
infinity 명사/ɪnˈfɪnɪti/무한
dismiss 동사/dɪsˈmɪs/해고하다
vibe 명사/vaɪb/분위기
slice 명사/slaɪs/부분, 몫
algorithm 명사/ˈælɡəɹɪðm̩/알고리즘, 알고리듬
sponsor 명사/ˈspɒn.səː/스폰서

영상에 나오는 구동사

단어뜻
log out 동사로그아웃하다

따라 말해 볼 만한 문장

영상에 나오는 짧고 완결된 문장으로, 일상 대화에서 그대로 쓸 수 있습니다:

  • I've understood what it was.
  • How dare you say everyone?
  • All right, so let's go to the white board.
  • At least that's what I thought in my head.
  • Remember how I talked about this new line constant?

이 영상의 문법

화자가 가장 많이 쓰는 문형을 영상 속 실제 표현과 함께 정리했습니다.

문형영상 속 표현
현재완료 have/has + 과거분사 — 과거의 일이 지금도 관련이 있을 때I've understood · I've called · have chosen
관계절 who / which + 절 — 사람이나 사물에 대한 추가 정보this, which is · tail, which makes

주의할 발음

화자는 I'm, don't, gonna 같은 축약형과 약화된 형태를 50번 사용합니다. 들리는 대로 짧게 발음하세요.

  • “th” 소리: algorithm /ˈælɡəɹɪðm̩/, underneath /ˌʌndɚˈniθ/
  • “sh”와 “zh” 소리: optimization /ˌɑptəmaɪˈzeɪʃən/, instruction /ɪnˈstɹʌkʃən/, disproportionately /ˈdɪs.pɹəˌpɔɹ.ʃən.ət.li/, initialize /ɪˈnɪʃəlaɪz/, gosh /ɡɑːʃ/
  • 긴 단어 — 강세 위치에 주의: developer /dɪˈvɛləpɚ/, optimization /ˌɑptəmaɪˈzeɪʃən/, manually /ˈmænj(u)əliː/, cardinality /kɑɹdɪˈnælɪti/, disproportionately /ˈdɪs.pɹəˌpɔɹ.ʃən.ət.li/

한국어 화자가 어려워하는 소리:

  • /f/ — ㅍ(/p/)으로 바꾸지 말고 윗니를 아랫입술에 대기: straightforward /ˌstɹeɪtˈfɔː(ɹ)wə(ɹ)d/, float /fləʊt/, focal /ˈfoʊ.kl̩/, infinity /ɪnˈfɪnɪti/, surf /sɝf/
  • /v/ — ㅂ(/b/)과 구별하기: vector /ˈvɛktɚ/, developer /dɪˈvɛləpɚ/, massively /ˈmæs.ɪv.li/, naive /naɪˈiv/, vibe /vaɪb/
  • /z/ — ㅈ이 아니라 성대를 울리는 /s/: lanes /leɪnz/, optimization /ˌɑptəmaɪˈzeɪʃən/, initialize /ɪˈnɪʃəlaɪz/

이 영상으로 연습하는 방법

  1. 먼저 말하지 않고 영상을 끝까지 듣고 모르는 단어를 적어 둡니다.
  2. 0.75배속으로 한 문장씩 섀도잉을 시작하고, 익숙해지면 보통 속도로 돌아갑니다.
  3. 자신의 목소리를 녹음해 원본과 비교하고, byte, vector, cardinality 같은 단어에 특히 주의합니다.

쉐도잉이란? 영어 실력을 빠르게 키우는 과학적 방법

쉐도잉(Shadowing)은 원래 전문 통역사 훈련을 위해 개발된 언어 학습 기법으로, 다언어 학자인 Dr. Alexander Arguelles에 의해 대중화된 방법입니다. 핵심 원리는 간단하지만 매우 강력합니다: 원어민의 영어를 들으면서 1~2초의 짧은 지연으로 즉시 소리 내어 따라 말하는 것——마치 '그림자(shadow)'처럼 화자를 따라가는 것입니다. 문법 공부나 수동적인 청취와 달리, 쉐도잉은 뇌와 입 근육이 동시에 실시간으로 영어를 처리하고 재현하도록 훈련합니다. 연구에 따르면 이 방법은 발음 정확도, 억양, 리듬, 연음, 청취력, 말하기 유창성을 크게 향상시킵니다. IELTS 스피킹 준비와 자연스러운 영어 소통을 원하는 분들에게 특히 효과적입니다.

섀도잉 방법: 단계별 전체 가이드 읽기 →