Chúng tôi không thể tìm thấy kết nối internet
Đang cố gắng kết nối lại
Có lỗi xảy ra!
Hãy kiên nhẫn trong khi chúng tôi khắc phục sự cố
Microsoft tấn công hạt nhân vào codebase TypeScript…
0:00 yesterday Microsoft dropped an
0:01 unexpected bombshell on programmers when
0:03 it announced that the Beloved typescript
0:05 programming language is being completely
0:07 reprogrammed a typescript is one of the
0:09 most important projects in modern web
0:10 development but it has one fatal flaw
0:12 the typescript language itself is
0:14 written in typescript and typescript is
0:16 just not optimized for building things
0:18 like typescript but you won't believe
0:19 which language Anders hilburg and
0:21 Microsoft chose for the rewrite it's not
0:23 the battle tested C++ it's not
0:25 Microsoft's Golden Boy C it's not the
0:27 highly memeable rust it's a language
0:29 know expected which I will reveal in
0:31 dramatic fashion at the end of this
0:33 video to optimize viewer retention for
0:35 the algorithm just kidding I ain't F to
0:37 play you like that they used go a
0:39 language developed by their arch nemesis
0:40 Google a language with a simplistic type
0:42 system and limited functional
0:44 capabilities a language that many people
0:46 on the internet love to hate nowadays
0:48 all the CP and rust Fanboys are feeling
0:50 the effects of this Panic function right
0:51 now and in today's video we'll find out
0:53 why this is a huge deal and answer the
0:55 question of why did Microsoft go with go
0:57 it is March 12th 2025 and your watching
1:00 the code report another day another bat
1:02 signal that must be answered but this
1:04 trend of waiting for the fireship video
1:05 on every Tech announcement has gotten
1:07 out of control the tech companies like
1:08 Microsoft spend millions of dollars
1:10 making these videos and you guys are
1:11 screwing everything up causing the
1:13 entire global economy to collapse I'm
1:15 Michael Jordan stop it get some help
1:18 that being said Anders hilburg is one of
1:21 the true 10x developer unicorns out
1:22 there he's the creator of Turbo Pascal C
1:25 and typescript and you really should
1:27 watch his video typescript is not your
1:28 typical programming language it's a
1:30 super set of JavaScript and doesn't
1:32 actually have its own runtime TS code
1:34 gets compiled or transpiled to JS code
1:36 which then runs somewhere like node.js
1:38 Dino bun or the browser the problem is
1:41 that because the typescript compiler is
1:42 written in typescript there's an
1:44 inherent lack of support for low-level
1:46 optimization like direct memory access
1:48 native multi-threading and so on the
1:50 only way to truly fix the typescript
1:51 compiler was to not write it in
1:53 typescript by switching to go the
1:55 compiler is already 10 times faster like
1:57 they cut the vs code compile time from
1:59 70 seconds to 7 seconds and they got
2:02 similar 10x speedups on a bunch of other
2:04 projects that's cool and all but the
2:06 average developer should also see big
2:07 performance gains in the editor in big
2:09 projects typescript can be annoyingly
2:11 slow in VSS code but the new compiler
2:13 will change that in a big way the big
2:14 question though is why would Microsoft
2:16 use go well unlike JavaScript go is a
2:19 compiled language and when you write go
2:21 code it can be compiled into optimized
2:23 machine code for all chips this differs
2:25 from Java or C which is compiled into B
2:27 code and then runs on a virtual machine
2:29 in addition go uses automatic memory
2:31 management via garbage collection which
2:33 generally makes it easier to work with
2:35 compared to something like C++ or rust
2:37 but aside from performance I think the
2:39 main reason they chose go is for
2:40 portability you see calling this a total
2:42 rewrite is actually not the right
2:44 nomenclature it's actually a port to a
2:46 new language what they're doing is going
2:48 through every line of typescript code
2:49 and converting it to the equivalent go
2:51 code which means the behavior and
2:53 semantics of the original code base is
2:55 preserved all of your favorite annoying
2:57 compiler errors will still happen just
2:59 10 times faster than before but we won't
3:01 be able to reap these benefits right
3:02 away we're currently at typescript 5.8
3:05 but they're not going to release the new
3:06 compiler until typescript 7 and it will
3:08 likely take many months if not years to
3:10 get there now even though I'm still but
3:12 hurt that Microsoft kicked me out of the
3:13 MVP program I think they deserve a lot
3:15 of praise for the decision to go with go
3:17 they could have used one of Microsoft's
3:18 in-house languages they could have
3:20 jumped on the rust or Zig hype trains
3:22 but instead they put their egos aside
3:24 and use the best tool for the job but if
3:25 you're building a serious project with a
3:27 lot of code like this one thing's for
3:29 sure your code will break and the best
3:31 way to fix it faster is with Sentry the
3:33 sponsor of today's video their brand new
3:35 Trace Explorer lets you search filter
3:37 and visualize your span data across
3:39 multiple traces in your codebase is so
3:41 instead of just debugging one request at
3:43 a time you're able to easily spot
3:45 recurring issues in bottlenecks then
3:47 drill down to the exact span that's
3:48 causing trouble and make a quick fix you
3:50 can even calculate key metrics like 95th
3:53 percentile latency and turn them into
3:55 alerts and beautiful dashboards for
3:56 monitoring it's the tool of choice for
3:58 making your code not suck and trusted by
4:00 4 million developers myself included
4:02 give Sentry a try for free today with
4:04 the link below this has been the code
4:05 report thanks for watching and I will
4:07 see you in the next one
0:00 Hôm qua, Microsoft bất ngờ "tung bom" cho giới lập trình viên khi thông báo ngôn ngữ lập trình TypeScript được yêu thích sẽ được viết lại hoàn toàn. TypeScript là một trong những dự án quan trọng nhất trong phát triển web hiện đại, nhưng có một nhược điểm chí mạng: bản thân TypeScript lại được viết bằng TypeScript, mà TypeScript thì không được tối ưu hóa để xây dựng những thứ như TypeScript.
0:18 Nhưng bạn sẽ không thể tin được Anders Hejlsberg và Microsoft đã chọn ngôn ngữ nào để viết lại đâu. Không phải C++ đã được thử lửa, không phải C# con cưng của Microsoft, cũng không phải Rust đang gây sốt. Mà là một ngôn ngữ mà không ai ngờ tới, và tôi sẽ tiết lộ một cách đầy kịch tính ở cuối video này để giữ chân người xem cho thuật toán. Đùa thôi, tôi không chơi kiểu đó đâu. Họ đã sử dụng Go, một ngôn ngữ được phát triển bởi "kẻ thù không đội trời chung" của họ là Google, một ngôn ngữ với hệ thống kiểu đơn giản và khả năng chức năng hạn chế, một ngôn ngữ mà nhiều người trên mạng thích "ném đá" hiện nay.
0:48 Chắc hẳn những fan của C++ và Rust đang "sốc lên sốc xuống" lắm đây. Và trong video hôm nay, chúng ta sẽ tìm hiểu lý do tại sao đây là một vấn đề lớn và trả lời câu hỏi tại sao Microsoft lại chọn Go. Hôm nay là ngày 12 tháng 3 năm 2025 và bạn đang xem Code Report. Lại một ngày nữa, lại một "tín hiệu dơi" cần được giải đáp. Nhưng cái kiểu cứ hễ có thông báo công nghệ gì là lại chờ video của Fireship đã đi quá xa rồi. Các công ty công nghệ như Microsoft tốn hàng triệu đô la để làm những video này, và các bạn đang phá hỏng mọi thứ, gây ra sự sụp đổ của cả nền kinh tế toàn cầu. Tôi là Michael Jordan đây, dừng lại đi, tìm kiếm sự giúp đỡ đi.
1:18 Nói đi cũng phải nói lại, Anders Hejlsberg là một trong những "kỳ lân" phát triển 10x thực thụ. Ông là người tạo ra Turbo Pascal, C# và TypeScript, và bạn nên xem video của ông ấy. TypeScript không phải là một ngôn ngữ lập trình điển hình; nó là một "siêu tập hợp" của JavaScript và thực sự không có runtime riêng. Mã TS được biên dịch hoặc chuyển đổi sang mã JS, sau đó chạy ở đâu đó như Node.js, Deno, Bun hoặc trình duyệt. Vấn đề là vì trình biên dịch TypeScript được viết bằng TypeScript, nên nó thiếu sự hỗ trợ vốn có cho các tối ưu hóa cấp thấp như truy cập bộ nhớ trực tiếp, đa luồng gốc, v.v.
1:50 Cách duy nhất để thực sự sửa trình biên dịch TypeScript là không viết nó bằng TypeScript. Bằng cách chuyển sang Go, trình biên dịch đã nhanh hơn gấp 10 lần. Ví dụ, họ đã giảm thời gian biên dịch VS Code từ 70 giây xuống còn 7 giây và họ cũng đạt được mức tăng tốc tương tự trên nhiều dự án khác. Điều đó thật tuyệt vời, nhưng nhà phát triển trung bình cũng sẽ thấy hiệu suất tăng đáng kể trong trình chỉnh sửa. Trong các dự án lớn, TypeScript có thể chậm một cách khó chịu trong VS Code, nhưng trình biên dịch mới sẽ thay đổi điều đó một cách đáng kể. Tuy nhiên, câu hỏi lớn là tại sao Microsoft lại sử dụng Go?
2:16 À, không giống như JavaScript, Go là một ngôn ngữ được biên dịch và khi bạn viết mã Go, nó có thể được biên dịch thành mã máy được tối ưu hóa cho tất cả các chip. Điều này khác với Java hoặc C#, được biên dịch thành bytecode và sau đó chạy trên máy ảo. Ngoài ra, Go sử dụng quản lý bộ nhớ tự động thông qua thu gom rác, điều này thường giúp bạn dễ dàng làm việc hơn so với những thứ như C++ hoặc Rust. Nhưng ngoài hiệu suất, tôi nghĩ lý do chính họ chọn Go là vì tính di động.
2:40 Bạn thấy đấy, gọi đây là một bản viết lại hoàn toàn thực sự không chính xác; nó thực sự là một sự chuyển đổi sang một ngôn ngữ mới. Những gì họ đang làm là xem xét từng dòng mã TypeScript và chuyển đổi nó thành mã Go tương đương, có nghĩa là hành vi và ngữ nghĩa của cơ sở mã ban đầu được bảo toàn. Tất cả các lỗi trình biên dịch "khó chịu" mà bạn yêu thích sẽ vẫn còn đó, chỉ là nhanh hơn gấp 10 lần so với trước đây thôi. Nhưng chúng ta sẽ không thể gặt hái được những lợi ích này ngay lập tức. Chúng ta hiện đang ở TypeScript 5.8, nhưng họ sẽ không phát hành trình biên dịch mới cho đến TypeScript 7 và có thể mất nhiều tháng, thậm chí nhiều năm, để đạt được điều đó.
3:10 Mặc dù tôi vẫn còn "đau lòng" vì Microsoft đã loại tôi ra khỏi chương trình MVP, nhưng tôi nghĩ họ xứng đáng nhận được nhiều lời khen ngợi cho quyết định chọn Go. Họ có thể đã sử dụng một trong những ngôn ngữ nội bộ của Microsoft, họ có thể đã "đu trend" Rust hoặc Zig, nhưng thay vào đó, họ đã gạt cái tôi của mình sang một bên và sử dụng công cụ tốt nhất cho công việc. Nhưng nếu bạn đang xây dựng một dự án nghiêm túc với nhiều mã, như dự án này, thì có một điều chắc chắn: mã của bạn sẽ bị lỗi và cách tốt nhất để sửa nó nhanh hơn là với Sentry, nhà tài trợ của video hôm nay.
3:33 Trace Explorer hoàn toàn mới của họ cho phép bạn tìm kiếm, lọc và trực quan hóa dữ liệu khoảng thời gian của bạn trên nhiều dấu vết trong cơ sở mã của bạn. Vì vậy, thay vì chỉ gỡ lỗi từng yêu cầu một, bạn có thể dễ dàng phát hiện các vấn đề và tắc nghẽn định kỳ, sau đó đi sâu vào khoảng thời gian chính xác gây ra sự cố và thực hiện sửa chữa nhanh chóng. Bạn thậm chí có thể tính toán các số liệu chính như độ trễ phần trăm thứ 95 và biến chúng thành cảnh báo và bảng điều khiển đẹp mắt để theo dõi. Đó là công cụ được lựa chọn để làm cho mã của bạn "bớt tệ" hơn và được tin tưởng bởi 4 triệu nhà phát triển, bao gồm cả tôi.
4:02 Hãy dùng thử Sentry miễn phí ngay hôm nay với liên kết bên dưới [sentry(dot)io/]. Đây là Code Report, cảm ơn bạn đã xem và hẹn gặp lại bạn trong video tiếp theo.
Dịch Vào Lúc: 2025-03-13T00:45:36Z
Phiên bản Dịch: 3.1 Improved translation step with full context