ฝึกพูดภาษาอังกฤษด้วยเทคนิค Shadowing จากวิดีโอ: 100+ Computer Science Concepts Explained

กำลังสร้างบทเรียน...
1
What's the first thing you should do when your code throws an error?
2
Obviously, you should change nothing and try to run it again a few times.
3
If that doesn't work, you're gonna need a computer science degree.
4
The awesome thing about software engineering is that you can learn to code
5
and get a high-paying job while literally having no idea how anything actually works.
6
It all just feels like magic, like a pilot driving a giant metal tube in the sky while knowing nothing about aerodynamics.
7
Welcome to Computer Science 101.
8
In today's video, you'll learn the science behind the garbage code you've been writing by learning 101 different computer science terms and concepts.
9
This is a computer.
10
It's just a piece of tape that holds ones and zeros, along with a device that can read and write to it.
11
It's called a Turing machine, and in theory, it can compute anything, like the graphics in this video or the algorithm that recommended that you watch it.
12
At the core of modern computers, we have the central processing unit.
13
If we crack it open, we find a piece of silicon that contains billions of tiny transistors, which are like microscopic on-off switches.
14
The value at one of these switches is called a bit, and is the smallest piece of information a computer can use.
15
However, one bit by itself is not very useful, so they come in a package of 8 called a byte.
16
One byte can represent 256 different values, like all the characters that you type on your keyboard.
17
In fact, when you type into your keyboard, the character produced is actually mapped to a binary value in a character encoding like ASCII or UTF-8.
18
Binary is just a system for counting, like the base 10 system you normally use when counting on your fingers.
19
But it only has two characters, 1 and 0.
20
Humans have a hard time reading binary, so most often it's represented in a hexadecimal base 16 format,
21
where 10 numbers and 6 letters can represent a 4-bit group called a nibble.
22
As a developer, when you write code in a programming language, it will eventually be converted into machine code, which is a binary format that can be decoded and executed by the CPU.
23
What it doesn't do, though, is store data for your applications.
24
For that, computers have random access memory, or RAM.
25
It's like a neighborhood, and inside of every house lives a byte.
26
Every location has a memory address, which the CPU can read and write to.
27
You can think of the CPU and RAM as the brain of the computer.
28
But in order for a computer to be useful, it needs to handle input and output.
29
An input device might be the keyboard and mouse, while an output device might be your monitor.
30
Luckily, most developers don't need to worry about how this hardware fits together, because we have operating system kernels, like Linux, Mac, and Windows, that control all hardware resources via device drivers.
31
Now, to start hacking on the operating system, your first entry point is the shell, which is a program that exposes the operating system to the end user.
32
It's called a shell because it wraps the kernel.
33
It takes a line of text as input and produces an output.
34
This is called a command line interface.
35
Not only can it connect to your own computer, but with the secure shell protocol, it can also connect to remote computers over a network.
36
Now that you have access to the mainframe, it's time to pick a programming language, which is a tool
37
that uses the abstraction principle to make computers practical to work with for humans by simplifying different systems layer by layer.
38
Some languages, like Python, are interpreted.
39
That means there's a program called an interpreter that will execute each line of code one by one.
40
Other languages, like C++, are compiled.
41
They use a compiler to convert the entire program into machine
42
code in advance before the CPU attempts to execute it this results in an executable file
43
that can be run by the operating system without any extra dependencies.
44
Now, every programming language has a variety of built-in data types to represent the data we're working with in our code.
45
Instead of bytes, we work with more human-friendly things like characters and numbers.
46
Now, the most fundamental way to use data in your application is to declare a variable.
47
This attaches a name to a data point, allowing you to reuse it somewhere else in your code.
48
Python is a dynamically typed language, which means we don't need to tell the program exactly which data type is assigned to a variable.
49
It just figures it out automatically.
50
However, other languages like C are statically typed, and that means you need to specify the data type of a variable in your code.
51
When you define a variable, its value is stored somewhere in memory on the hardware, and you may need to allocate and free up memory throughout the program.
52
A pointer is a variable whose value is the memory address of another variable, which can be used for low-level memory control.
53
Many languages don't want to deal with low-level memory management and instead implement a garbage collector,
54
which automatically allocates and deallocates memory when an object is no longer referenced in the program.
55
Carpet's day!
56
Huh?
57
No!
58
Ah!
59
Now, the data types available are different in every programming language, but typically you'll find int to represent whole numbers,
60
which may or may not be signed or unsigned to represent negative numbers as well.
61
When numbers require a decimal point, they typically use the floating point type.
62
It's called a float because there's only enough memory to represent a certain range of numbers at a certain precision, and is basically a form of scientific notation to make computers faster.
63
If you need more range or precision, many languages also have a double that doubles the amount of memory used for the number.
64
Now when it comes to characters, you'll typically find the char data type to represent a single character, or more commonly, a string to represent multiple characters together.
65
Ultimately, these characters get stored in a memory address somewhere, but they need to be stored in a certain order.
66
When the order starts with the most significant byte in the smallest memory address, it's called Big Endian, or vice versa, if the least significant byte is stored in the smallest address, it's called Little Endian.
67
When it comes to practical software engineering, one of the most fundamental things we do is organize data into data structures.
68
The most useful data structure is probably the array, or list.
69
Just like a shopping list, it organizes multiple data points in order.
70
However, it also maintains an index of integers that starts at zero and goes up for every new item in the list.
71
That can be useful, but you don't actually need an index to create a list of items.
72
Another option is a link list, where each item has a pointer to the next item in front of it.
73
Another option is a stack that follows the last in first out principle.
74
It's like stacking a set of plates, then when you want to access the data, you pop the last one off the top.
75
The inverse option is a queue, which is first in first out.
76
Just like when you get into the breadline, the first person there is the first one to be fed.
77
Now another extremely useful data structure is the hash, which might also be called a map or dictionary.
78
It's like an array, but instead of an index of integers, you define the keys that point to each individual item, giving you a collection of key value pairs.
79
In many cases, though, it's not efficient to organize data in a linear way.
80
To address that problem, we have trees, which organize nodes together in a hierarchy that can often be traversed more quickly.
81
This can sometimes be too rigid of a data structure, though, so instead a graph can be created to connect multiple nodes together in a virtually unlimited number of ways.
82
A graph has a node for the data and an edge for the relationship between data points.
83
Data structures are essential, but they don't do anything by themselves.
84
To do something useful, you'll need to code up an algorithm, which is just code that solves a problem.
85
I took the initiative in creating the internet.
86
In our code, we have several mechanisms for implementing algorithms, the most fundamental of which is a function, which is a block of code that takes an input, then does something, and returns an output.
87
Like a variable, a function has a name, and it can be called from other parts of your code with different input parameters called arguments.
88
One thing you might do in the function body is compare one value to another.
89
Every language has a variety of built-in operators like equality, greater than, and less than that you can use to compare two values.
90
If A is greater than B, then it forms a value of true.
91
But if B is greater than A, then the value is false.
92
True false is what's known as a Boolean data type.
93
And whenever your code produces a value like this, it's known as an expression.
94
But not all code will produce a value.
95
Sometimes your code will simply do something, which is known as a statement.
96
A good example is the if statement, which handles conditional logic.
97
For example, if the condition is true, it will execute this code, otherwise it will short-circuit and run the code inside of the else block.
98
Another very common type of statement is a loop.
99
A while loop will run this block of code over and over again until the condition in the parentheses becomes false.
100
That can be useful, but more often than not, you'll want to loop over an iterable data type like an array.
101
Most languages have a for loop that can run some code for every object in the array or iterable data structure.
102
Now, in some cases, a function may not have an output, which is generally called a void function.
103
An interesting thing about functions is that they can call themselves.
104
When a function calls itself, it's called recursion, because when done like this, by default, it will recurse forever, creating an infinite loop.
105
That happens because when you call a function, the programming language will put it into memory on what's known as the call stack, which is a short-term chunk of memory for executing your code.
106
When a function keeps calling itself, the language will keep pushing frames onto the call stack until you get a stack overflow error.
107
To avoid this, your algorithm needs a base condition, so it knows when to terminate the loop.
108
Now, when you write an algorithm, you'll need to determine if it's any good, and the system for doing that is called Big O Notation.
109
It's a standard format for approximating the performance of an algorithm at scale.
110
It may reference time complexity, which is how fast your algorithm will run, and space complexity, which deals with how much memory is required to run it.
111
Developers have many different algorithm types at their disposal.
112
The most crude option is brute force, where you might loop over every possible combination to hack somebody's credit card pin.
113
A more sophisticated approach might be divide and conquer, like binary search where you cut the problem in half multiple times until you find what you're looking for.
114
Another option is dynamic programming algorithms, where a problem is broken down into multiple smaller subproblems, and the result of each computation is stored for later use,
115
using a technique called memoization.
116
That means if a function has already been called, it will use the existing value instead of recomputing it again from scratch.
117
Then we have greedy algorithms that will make the choice that is most beneficial in the short term, without considering the problem as a whole.
118
One example of this is Dijkstra's shortest path algorithm.
119
On the flip side, we have backtracking algorithms, which take a more incremental approach by looking at all of the possible options, like a rat in a maze exploring all the different potential paths.
120
Now when it comes to implementing your code, there are always multiple ways to get the job done.
121
One programming paradigm is declarative, where your code describes what the program does and the outcome, but doesn't care about things like control flow.
122
This style of programming is often associated with functional languages like Haskell.
123
The other paradigm is imperative programming, where your code uses statements like if and while, providing explicit instructions about how to produce an outcome.
124
It's associated with procedural languages like C.
125
Today, most general-purpose languages like Python, JavaScript, Kotlin, Swift, and so on are multi-paradigm, which means they support all these options at the same time,
126
in addition to object-oriented programming.
127
The idea behind OOP is that you use classes to write a blueprint for the data or objects in your code.
128
A class can encapsulate variables, which are commonly called properties, as well as functions, which are usually called methods in this context.
129
It's a common way to organize and reuse code because classes can share behaviors between each other through inheritance, where a subclass can extend and override the behaviors of the parent class,
130
and it opens the door to all kinds of other ideas called design patterns.
131
Now, a class by itself doesn't actually do anything.
132
Instead, it's used to instantiate objects, which are actual chunks of data that live in your computer's memory.
133
Often, you'll want to reference the same object over and over again in your code.
134
When data is long-lived, it can't go in the call stack.
135
Instead, most languages have a separate area of memory called the heap, which unlike the call stack, can grow and shrink based on how your application is used.
136
It also allows you to pass objects by reference, which means you can use the same object in multiple variables without increasing the memory footprint, because it always points to the same chunk of memory in the heap.
137
Now what's interesting is that if we go back to the CPU that we talked about in the beginning, you'll notice that it contains multiple threads.
138
A thread takes the physical CPU core and breaks it into virtual cores that allow it to run code simultaneously.
139
There are some programming languages that support parallelism, where you can write code that literally executes on two different threads at the same time.
140
However, many languages out there are only single-threaded, but that doesn't mean they can't do two things at the same time.
141
Instead, they implement concurrency models, like an event loop or coroutines, that can pause or delay the normal execution of code to handle multiple jobs on a single thread at the same time.
142
Now, in modern computing, we're rarely working with the bare metal CPU and RAM.
143
Instead, we work in the cloud with a virtual machine, which is just a piece of software that simulates hardware.
144
That allows us to take really big computers and split them up into a bunch of smaller virtual computers.
145
These These machines are the backbone of the internet and are connected via the internet protocol.
146
Each machine has a unique IP address to identify it on the network.
147
That IP address is usually alias to a URL that is registered in a global database called the Domain Name Service.
148
Now to establish a connection, the two computers will perform a TCP handshake, which will allow them to exchange messages called packets.
149
On top of that, there's usually a security layer like SSL to encrypt and decrypt the messages over the network.
150
Now the two computers can securely share data with the Hypertext Transfer Protocol.
151
The client may request a webpage, then the server will respond with some HTML.
152
Modern servers provide a standardized way for a client to request data, which is called an Application Programming Interface or API.
153
The most common architecture is REST, where URLs are mapped to different data entities available on the server.
154
And that brings us to our final topic, mother effin' printers.
155
You're gonna need to learn how these things work inside and out, because every time you go to grandma's house, she's going to ask you to fix it, which shouldn't be a problem for a computer scientist like you.
156
Thanks for watching, and I will see you in the next one.

ทำไมการฝึกพูดกับวิดีโอนี้จึงสำคัญ?

การฝึกพูดภาษาอังกฤษเป็นหนึ่งในวิธีที่ดีที่สุดในการพัฒนาทักษะการสื่อสารของคุณ กับวิดีโอนี้ที่กล่าวถึงหลักการทางคอมพิวเตอร์ คุณจะได้เรียนรู้คำศัพท์สำคัญและแนวคิดต่างๆ ที่ใช้กันทั่วไปในโลกของไอที แทนที่จะอ่านหนังสือเพียงอย่างเดียว การดูวิดีโอช่วยให้คุณได้ยินเสียงจริงและการนำเสนอที่ชัดเจน จึงทำให้สามารถฝึกพูดตามในบริบทที่เหมาะสมได้ การดูแลฝึกพูดด้วยวิธีนี้จะช่วยให้คุณกล้าพูด และเข้าใจภาษาอังกฤษได้ดีขึ้น ไม่ว่าจะในงานสัมมนา หรือการสื่อสารกับเพื่อนร่วมงานในอนาคต

ไวยากรณ์และสำนวนในบริบท

ในการวิเคราะห์โครงสร้างที่สำคัญในวิดีโอนี้เราสามารถพบเห็นได้หลายประการ:

  • ถ้าหาก (If condition): การใช้ประโยคเงื่อนไขช่วยในการอธิบายสถานการณ์ต่างๆ เช่น "If that doesn't work, you're gonna need a computer science degree." คุณสามารถนำไปประยุกต์ใช้ในการสื่อสารเมื่อบรรยายสถานการณ์ที่อาจเกิดขึ้นในอนาคตได้
  • การใช้ภูมิปัญญา (Wisdom statements): นักพูดมักใช้ประโยคที่มีภูมิปัญญาเพื่อให้ผู้ฟังเห็นภาพและเข้าใจความหมายได้ดีขึ้น ยกตัวอย่างเช่น "It's just a piece of tape that holds ones and zeros." ซึ่งเป็นการเอาใจใส่ในการอธิบายด้วยความเรียบง่าย
  • การเปรียบเทียบ (Comparisons): เช่น "like a pilot driving a giant metal tube." เป็นการใช้การเปรียบเทียบเพื่อสร้างภาพในจินตนาการ ทำให้เข้าใจได้ดีขึ้นเกี่ยวกับเทคโนโลยีที่มีความซับซ้อน

กับดักการออกเสียงที่พบบ่อย

ในวิดีโอนี้มีคำและวลีที่อาจทำให้ผู้เรียนรู้สึกยุ่งยากในการออกเสียง เช่น:

  • Transistor: คำนี้อาจมีการออกเสียงที่แตกต่างจากการเขียน พยายามฟังและเลียนแบบเสียงในวิดีโอเพื่อพัฒนาทักษะการออกเสียงให้ถูกต้อง
  • Algorithm: คำนี้เป็นอีกหนึ่งคำที่มักมีการออกเสียงผิด ดันให้ฟังในหลายๆ ครั้งและลองพูดตามซ้ำๆ
  • Interface: คำนี้อาจมีความซับซ้อนในการเปล่งเสียงโดยเฉพาะเมื่อมีบริบททางเทคนิค ผู้อ่านควรฝึกพูดออกเสียงอย่างชัดเจน

การฝึกพูดตามฟังวิดีโอนี้สามารถเสริมสร้างคำศัพท์และการออกเสียงของคุณได้อย่างมีประสิทธิภาพ รวมทั้งยังช่วยให้คุณเชี่ยวชาญในการใช้ shadowspeak เพื่อขยายขอบเขตภาษาอังกฤษของคุณ หลีกเลี่ยงกับดักเหล่านี้ในระหว่างการฝึกพูดจะทำให้คุณกลายเป็นผู้เชี่ยวชาญในการใช้งาน shadow speech ได้อย่างกล้าหาญ!

เทคนิค Shadowing คืออะไร?

Shadowing เป็นเทคนิคการเรียนรู้ภาษาที่ได้รับการรับรองทางวิทยาศาสตร์ พัฒนาขึ้นสำหรับการฝึกนักแปลมืออาชีพ วิธีการนี้เรียบง่ายแต่ทรงพลัง: คุณฟังเสียงภาษาอังกฤษจากเจ้าของภาษาและพูดตามทันที — เหมือนเงาที่ตามผู้พูดด้วยช่วงเวลาห่าง 1-2 วินาที การวิจัยแสดงว่าเทคนิคนี้ปรับปรุงความแม่นยำในการออกเสียง ทำนองเสียง จังหวะ การเชื่อมเสียง การฟังเข้าใจ และความคล่องแคล่วในการพูดได้อย่างมีนัยสำคัญ