MỤC LỤC
1. Coding và tính cần thiết của coding
Coding, hay programming, hay lập trình chỉ việc lập ra chương trình cho máy tính hay
thiết bị có bộ xử lý thực hiện. Đó là tập hợp các dịng lệnh mà máy tính có thể phiên
dịch và thực hiện.
Vì sao lập trình lại quan trọng?
Từ lâu, con người đã biết chế tạo công cụ phục vụ cho đời sống và sản xuất. Theo
dòng phát triển của xã hội, con người ngày càng chứng tỏ được khả năng sáng tạo
trong việc trong việc tạo ra các cơng cụ của mình. Một trong những phát minh mang
tính cách mạng là ngơn ngữ lập trình, giúp việc thao tác với máy móc của con người
nâng lên một tầm cao mới.
500 trước, con người chưa từng nghĩ họ có thể giao tiếp với các cơng cụ của họ. Làm
sao để kêu một cái máy dệt tự dệt ra vải, hay bắt một cái đèn tự động tắt mỗi tối.
Nhưng với khả năng hiện tại của con người, những việc đó là hồn tồn trong tầm tay
với sự trợ giúp mạnh mẽ của ngơn ngữ lập trình. Ngồi ra, ngơn ngữ lập trình cịn là
nền tảng cho cơng nghệ tự động hóa, mở ra khả năng sản xuất và hỗ trợ cuộc sống
đáng kinh ngạc của máy móc.
Về mặt nào đó, việc lập trình cũng có ý nghĩa như một hành cách mơ phỏng hành
động nào đó trong thế giới thực, chỉ là các cơng việc đó do máy móc thực hiện. Các
thiết bị thân thuộc với chúng ta giờ đây thường được gán với tính từ “smart”. Từ điện
thoại, đồng hồ, tivi cho đến tủ lạnh, máy giặt, máy lạnh,... Các thiết bị ngày càng trở
nên thông minh hơn và một ngày nào đó, có thể chúng thật sự có thể tự tư duy như
cách chúng ta kỳ vọng vào trí tuệ nhân tạo. Và để đạt được sự thơng minh đó, tất
nhiên khơng thể thiếu vai trị thiết yếu của ngơn ngữ lập trình.
Bên cạnh các ứng dụng to lớn của ngơn ngữ lập trình, bản thân việc tiếp cận ngơn ngữ
lập trình đã giúp chúng ta trở nên tốt hơn. Thật vậy, thế giới xung quanh chúng ta tồn
tại những quy luật, quy tắc phối hợp với nhau một cách logic để mọi thứ có thể vận
2
hành bình thường. Ngơn ngữ lập trình cũng địi hỏi người sử dụng phải thật logic, có
mục đích rõ ràng và tuân theo những quy tắc đã đặt ra trước đó. Việc học lập trình
giúp chúng ra có mục tiêu rõ ràng, hành động logic, có kế hoạch, có tư duy trừu tượng
hóa sự việc trong cuộc sống.
2. Tại sao các chương trình coding online lại cần thiết
Thay vì việc viết các chương trình code bằng cài cài riêng các phần mềm vào máy
tính như trước đây thì ngày nay việc viết code online trên các không gian mạng đang
rất được nhiều người dùng tin. Tại sao lại như vậy?
-
Sự tiện lợi, dễ sử dụng
Trước đây khi bạn cần viết một chương trình, đoạn code nào sử dụng ngơn ngữ lập
trình nào thì sẽ phải cài phần miền đó trên máy. Một điều mọi người hay đắn đo
không biết máy tính của mình có cấu hình đủ mạnh để cài và sử dụng chúng không.
Và việc cài đặt này khá rườm rà. Mặt khác, việc đôi lúc bạn cài đặt nhiều phần mềm
trên máy và khi sử dụng chúng thì sẽ lưu trữ một khối lượng dữ liệu lớn. Ít nhiều sẽ
ảnh hưởng đến chất lượng, tuổi thọ máy. Tuy nhiên với các chương trình coding
online thì bạn sẽ viết code trực tiếp trên không gian mạng không cần quan tâm vấn
đề trên.
-
Tính mọi lúc mọi nơi
Cho dù là bất kỳ máy tính nào có kết nối internet chỉ cần bạn đăng nhập là có thể viết
chương trình, viết code tiếp cơng việc đang cịn dở dang của mình mọi lúc mọi nơi.
Chứ không bị cài đặt riêng phần mềm trên từng máy và cố định trên một máy. Điều
này giúp thúc đẩy làm việc linh hoạt, tăng năng suất.
-
Khả năng trao đổi, chia sẻ thơng tin
Bạn có thể dễ dàng chia sẻ các chương trình các đoạn code, các tài nguyên với
những người dùng khác trên cùng nền tảng để cùng nhau phát triển
-
Tiết kiệm, thời gian chi phí
Bạn khơng cần phải tốn chi phí nâng cấp máy đủ mạnh để cài phần mềm về riêng
cho từng máy. Ngoài ra, giả sử nếu bạn đang thực hiện một dự án và phần mềm cần
viết phải tốn x chi phí để sử dụng. Nếu bạn cài chương trình đó xuống cho từ máy
3
của các thành viên trong dự án thì sẽ tốn chi phí x.n. Nhưng nếu bạn sử dụng các
chương trình coding online thì chỉ đăng ký một tài khoản với mức chi phí x và những
thành viên trong dự án chia sẻ cho nhau. Nó sẽ giúp bạn tiết kiệm rất rất nhiều chi
phí. Bên cạnh đó, mọi người đều có thể cùng làm và dễ dàng theo dõi tiến độ của
nhau một cách kịp thời để đưa ra những quyết định chính xác. Từ đó rút ngắn thời
gian hồn thành và mang lại hiệu quả làm việc cao. Như vậy sẽ tiết kiệm được rất
nhiều thời gian và chi phí.
Cũng bởi vì những lý do nói trên nên sự ra đời của các chương trình coding online
như một bước ngoặt quan trọng tạo nên sự tiếp lợi, giúp tiết kiệm thời gian và chi
phí. Nên cũng khơng qua bất người khi nó được sử dụng rộng rãi.
3. Các chương trình coding online phổ biến
3.1 Codechef
3.1.1. Giới thiệu
CodeChef là một trong những nền tảng lập trình cạnh tranh tồn cầu, phổ biến và lớn
nhất thế giới, được sinh viên và các lập trình viên chun nghiệp ưa thích.
CodeChef khuyến khích học hỏi liên tục và các cuộc thi lập trình thân thiện cho
người dùng, cùng với sự hỗ trợ của cộng đồng lớn các nhà quản lý vấn đề (problem
curators).
Codechef biên dịch và chạy mã với the CodeChef online IDE, hỗ trợ nhiều ngơn ngữ
lập trình như Python, C++, C, Kotlin, NodeJS và nhiều ngơn ngữ khác.
3.1.2. Các tính năng
Tính năng 1 - Thực hành và học tập
- Cung cấp cho người học khơng gian nhập đoạn mã lập trình và chạy chương trình
với IDE trực tuyến CodeChef.
4
Không gian soạn code và chạy code của Codechef
- Cung cấp các bài học để người học luyện tập và học theo mức độ khó từ người mới
bắt đầu học, dễ, trung bình tới mức độ có thể cạnh tranh và thi đấu.
5
Các bài học theo cấp độ của Codechef
- Người học có thể tìm kiếm các vấn đề, các bài học trên Codechef dựa vào các thẻ.
Ví dụ người học có thể tìm kiếm theo tác giả u thích, các mức độ khó khác nhau,
hoặc một chủ đề cụ thể,...
6
Các thẻ của Codechef
- Cung cấp chuỗi kiến thức DSA: chuỗi do các cộng tác viên của Codechef tổng hợp
lại. Ở đây Codechef tổ chức các cuộc thi thực hành bao gồm các vấn đề được sắp xếp
từ các chủ đề nhất định. Codechef cũng cung cấp các Danh sách tài nguyên được
tuyển chọn để học hỏi, cùng với các Gợi ý cho các vấn đề và các phiên Học tập. Các
vấn đề trong các cuộc thi này sẽ là các vấn đề hiện có trên CodeChef. Các phiên học
tập được thực hiện bởi một tình nguyện viên CodeChef. Mục đích chính của các buổi
học này là thảo luận về các chủ đề lý thuyết và sau đó chuyển sang cách giải quyết
các vấn đề của cuộc thi.
7
Giao diện của chuỗi DSA Learning Series
Tính năng 2 - Cạnh tranh
- Nơi đây cung cấp các cuộc thi để người học có cơ hội được áp dụng những thứ
mình đã học và luyện tập được đi thi đấu với người dùng khác. Gồm có các cuộc thi:
+ Code long challenge: là cuộc thi viết mã được tổ chức hàng tháng kéo dài 10 ngày.
Cuộc thi tạo thử thách cho người học bằng cách tạo khoảng thời gian để suy nghĩ về
một vấn đề, thử các cách khác nhau để tấn công vấn đề.
+ CodeChef SnackDown 2021: SnackDown 2021 là một giải đấu lập trình tồn cầu
nhiều vịng thường niên do CodeChef thực hiện.
8
- Nơi đây cũng cung cấp lịch thi của các cuộc thi, để người dùng có thể chủ động tìm
hiểu và sắp xếp thời gian tham gia.
- Nơi đây cũng tiến hành xếp hạng người dùng thông qua điểm số của các cuộc thi.
Giao diện các cuộc thi của Codechef
Tính năng 3 - Thảo luận
- Cung cấp diễn đàn để người dùng có thể đặt câu hỏi và trả lời các câu hỏi. Người
dùng có thể tìm kiếm các câu hỏi trên diễn đàn theo các danh mục, các thẻ, câu hỏi
nổi bật,...
9
Diễn đàn Codechef
- Cung cấp Blog: Blog được chia theo nhiều chủ đề khác nhau để người đọc có thể
dễ dàng tìm kiếm các Blog theo nhu cầu.
Codechef Blog
3.1.3. Nhược điểm
-Số lượng truy cập của Codechef chỉ có 503 lượng truy cập cùng một lúc trong khi
những trang web khác có thể xử lý lưu lượng truy cập lớn hơn.
10
-CodeChef có rất nhiều cuộc thi hay và hấp dẫn nhưng thời gian thực hiện cuộc thi
đó quá dài dẫn đến sẽ xảy ra các trường hợp gian lận làm cho cuộc thi mất đi sự cân
bằng.
3.2 W3schools
3.2.1. Giới thiệu
W3Schools là một trang web giáo dục cho việc học các công nghệ web trực tuyến.
Nội dung bao gồm các hướng dẫn và tài liệu tham khảo liên quan đến HTML, CSS,
JavaScript, JSON, PHP, Python, AngularJS, SQL, Bootstrap, Node.js, jQuery,
XQuery, Ajax, và XML.
W3Schools hướng dẫn về web với hơn 1000 ví dụ cụ thể. Bằng cách sử dụng TryIt
editor, người đọc có thể đọc và chỉnh sửa code trong sandbox. Ví dụ của W3Schools
đã bị chỉ trích là "xấu và bị định dạng sai", tuy nhiên các trang của họ được đánh giá
là "nhanh" và được liên kết chính xác.
3.2.2. Các tính năng
- W3schools cung cấp các bài hướng dẫn học tập cho từng ngơn ngữ lập trình. Có
các danh mục các ngơn ngữ lập trình để người học dễ dàng tìm kiếm ngơn ngữ theo
nhu cầu.
11
Danh mục hướng dẫn
- Trong mỗi bài hướng dẫn sẽ có: lý thuyết, ví dụ, bài tập, câu hỏi trắc nghiệm, tài
liệu tham khảo.
Ví dụ
12
Bài tập
- W3schools cung cấp công cụ test code ngay trên trang để người dùng có thể luyện
tập ví dụ, bài tập ngay lập tức. Người dùng có thể tự soạn lại đoạn chương trình mới
và run (chạy) code để test ngay kết quả.
Soạn và chạy code online
- W3school cung cấp danh mục Exercises gồm có: Danh mục bài tập, Danh mục câu
hỏi trắc nghiệm, Danh mục khóa học, Danh mục khóa học cấp tín chỉ để người dùng
tìm kiếm dễ dàng theo nhu cầu học.
13
- W3school cung cấp các video hướng dẫn: dành cho những người thích xem video
hơn là đọc trên website.
3.2.3. Nhược điểm
W3School là một nơi tuyệt vời để học các kiến thức cơ bản về ba ngơn ngữ lập trình
chính. Mỗi chương có các bài học được hướng dẫn với các ví dụ và bài tập thực
hành. Hạn chế duy nhất là hệ thống W3School chỉ bao gồm những điều rất cơ bản.
14
Loạt bài hướng dẫn này hoàn hảo để chọn phát triển web như một sở thích hoặc nâng
cao các bài học kinh nghiệm trong trường học lập trình.
3.3 Ideone
3.3.1. Giới thiệu
Ideone là một website hỗ trợ phiên dịch, gỡ lỗi và chạy thử code PHP online, là một
công cụ tập trung vào việc lập trình và phát triển phần mềm. Nổi bật nhất là khả
năng debug ngơn ngữ lập trình khác nhau từ cùng một trang, hỗ trợ lập trình ở nhiều
ngơn ngữ, Ideone cho phép lập trình với hơn 60 ngơn ngữ khác nhau: C#, Java, SQL,
Python…
3.3.2. Các tính năng
-
Chia sẻ code (Đây là một pastebin: sử dụng để dễ dàng lưu trữ và chia sẻ các
snippet code với người khác bằng hình thức trực tuyến).
Kí hiệu “mắt kính”
-
Khả năng debug ngơn ngữ lập trình khác nhau từ cùng một trang, chạy (run)
code trên máy chủ hỗ trợ hơn 60 ngơn ngữ lập trình C#, Java, Objective-C tới
SQL, VB.NET,…(tương lai sẽ hỗ trợ thêm nhiều ngôn ngữ hơn)
15
-
Cung cấp dữ liệu đầu vào (input data) cho chương trình của riêng mỗi cá nhân.
-
Ideone.com cũng cung cấp miễn phí ideone API có sẵn như một webservice.
Chức năng này cho phép xây dựng các dịch vụ riêng giống như ideone.
-
Cho phép người dùng đăng nhập Ideone và cung cấp chức năng quản lý code
của riêng mỗi người và nhiều chức năng khác.
3.3.3. Nhược điểm
- Bố cục trang web còn rối bởi các quảng cáo và nội dung khác. (nhược điểm của
IDEOne là hơi khó dùng vì bố cục trang web rất rối rắm bởi đủ thứ quảng cáo và các
nội dung khác. Nếu có thêm nhiều thư viện code thay thế thì sẽ tuyệt vời hơn.)
- Tốc độ thực thi hơi chậm
3.4. Scratch
3.4.1. Giới thiệu
Scratch là một ngôn ngữ lập trình dạng kéo thả, hướng đến đối tượng sử dụng chính
là trẻ em. Người dùng có thể tạo các dự án bằng cách kéo thả các khối lệnh. Ngôn
16
ngữ lập trình Scratch được phát triển bởi MIT Media Lab và đã được dịch sang hơn
70 loại ngôn ngữ khác nhau. Ngơn ngữ lập trình Scratch phát triển theo hướng tương
tác trực quan, đồ họa sống động, sản phẩm liền tay mà vẫn đảm bảo tính khoa học,
tính liên thơng tri thức.
3.4.2. Các tính năng
-
Dễ dàng sử dụng Scratch, trực quan dễ học cho mọi lứa tuổi đặc biệt là trẻ em.
Khơng địi hỏi q nhiều những quy tắc hay luật lệ chỉ sử dụng các khối lệnh
đơn giản do đó đây là ngơn ngữ nền tảng để bắt đầu học những ngơn ngữ lập
trình khác.
-
Scratch 3.0 được thiết kế với HTML5 kết hợp với JavaScript chuyên nghiệp
hoàn toàn mới tích hợp nhiều tính năng vượt bậc như: Chuyển văn bản thành
giọng nói, tạo các tiện ích mở rộng của riêng mình, LEGO MINDSTORMS
EV3,…
-
Cộng đồng lớn những người dùng phần mềm lập trình Scratch trên thế giới
bằng hình thức trực tuyến, nên thuận tiện chia sẻ và học hỏi lẫn nhau.
17
-
Phần mềm Scratch hỗ trợ sử dụng trên máy tính bảng: Phiên bản mới nhất của
Scratch được xây dựng trên HTML5 thay vì Flash. Vì thế, từ giờ Scratch đã có
thể hỗ trợ viết code trên máy tính bảng, thậm chí là smartphone.
-
Phần mềm Scratch có hệ thống tiện ích: Scratch cho phép trẻ lập trình các thiết
bị vật lý bao gồm cả Micro:bits và LEGO robotics kits. Phần mềm cũng được
tích hợp với nhiều dịch vụ web, điển hình là Google Translate. Bên cạnh đó,
cảm biến video sẽ hoạt động để phát hiện chuyển động khi có liên kết với
camera của thiết bị
-
Phần mềm Scratch sở hữu trình chỉnh sửa âm thanh, hình ảnh mới: Thư viện
âm thanh trong Scratch được chia thành 3 danh mục: Space, Sports và Wacky.
Đồng thời, đội ngũ phát triển của Scratch cũng đã cải thiện các cơng cụ khác để
trẻ có trải nghiệm tuyệt vời hơn khi sử dụng. Cụ thể, công cụ có thể dùng tăng
và giảm tốc độ, đảo ngược âm thanh, thêm hiệu ứng tiếng vang, tiếng robot
trong việc tạo lập và để giúp người dùng tạo và chỉnh sửa nhân vật (Sprites).
-
Phần mềm lập trình game Scratch có thể giúp:
+ Làm game
18
+ Làm đồ họa : Học tốn tốt hơn thơng qua Scratch.
+ Âm nhạc: Có thể dùng Scratch để sáng tác ra những đoạn nhạc đơn giản
+ Làm phim: Có thể dùng Scratch để làm đạo diễn của những những clip nhỏ,
phim ngắn.
+ Điều khiển robot: làm quen với việc lắp ghép và lập trình robot và lập trình
điều khiển robot.
3.4.3. Nhược điểm
- Website có một chút lộn xộn.
- Ngơn ngữ này hồn tồn ảo trên máy tính, các bé khơng được cầm, nắm, quan sát
kết quả lập trình của mình một cách thực tế ngồi đời sống, khiến nhiều bé có thể
chán nản và khơng có hứng thú học tập tiếp.
4. So sánh chương trình online với offline
Phần mềm code offline
Phần mềm code online
19
Không cần kết nối internet: Ưu điểm
Cần mạng để hoạt động: Để sử dụng
của việc sử dụng các phần mềm offline
các chương trình code online. Kết nối
là người dùng khơng cần kết nối
internet luôn là yêu cầu đầu tiên. Tuy
internet để hoạt động. Điều này giúp
có hạn chế về mặt kết nối, nhưng bù
cho người dùng chủ động hơn trong
lại, khi sử dụng các chương trình code
việc lựa chọn khơng gian và thời gian
online, người dùng có thể thực hiện
làm việc.
cơng việc của mình bằng các thiết bị
đa dạng hơn như điện thoại, máy tính
bảng, note, …
Cần lưu trữ dữ liệu: Khi lập trình trên
Khơng cần lưu trữ dữ liệu: Khi làm
máy tính, người dùng sẽ cần một nơi
việc trên mạng, người dùng không cần
để lưu lại sản phẩm của mình để tránh
phải lưu trữ lại dữ liệu. Các chương
các sự cố hỏng hóc máy tính dẫn đến
trình đang làm của người dùng sẽ tự
mất dữ liệu trong máy. Các dữ liệu
động được lưu trữ trên hệ thống của
cũng cần phải lưu liên tục trong quá
trang web.
trình làm việc để tránh mất điện mà
sản phẩm chưa kịp lưu.
An toàn bảo mật: Dữ liệu sản phẩm
Nguy hiểm về bảo mật: Các dữ liệu lưu
được lưu trữ tại máy tính và ổ cứng
tại hệ thống internet sẽ rất dễ bị đánh
ngoài, đảm bảo cho dữ liệu sẽ có được
cắp. Đối với các dự án lớn, việc để lộ
tính bảo mật cao hơn so với lưu trên hệ
thông tin hay dữ liệu là vấn đề cực kỳ
thống internet.
lớn.
Trao đổi khó khăn: Tính cá nhân của
Dễ dàng trao đổi: Đối với các chương
mỗi máy tính làm cho việc trao đổi các
trình coding online, việc trao đổi thông
dự án với người khác trở nên rất khó
tin về dự án, sản phẩm sẽ rất dễ dàng.
khăn, đặc biệt là trong tình hình dịch
Cùng một lúc, có thể có nhiều người
bệnh Covid-19 hiện nay. Để trao đổi
cùng thao tác với sản phẩm trên khơng
được, các lập trình viên phải đưa sản
gian mạng. Điều này sẽ rút ngắn thời
phẩm của mình lên internet.
gian hồn thành sản phẩm và các bước
20
trao đổi rườm rà như khi sử dụng phần
mềm coding offline.
5. Tài liệu tham khảo
Scratch là gì? Tặng tài liệu hướng dẫn lập trình Scratch 3.0 miễn phí - Thiết
bị giáo dục STEM. (10/03/2021). OhStem. Truy xuất ngày 15/12/ 2021, tại
/>Top 10 website kiểm tra code online tốt nhất cho developer. (12/06/2020).
Influxweb Technologies. Truy xuất ngày 15/12/ 2021, tại
/>Tính năng nổi bật của ngơn ngữ lập trình scratch là gì?. (24/10/2020).
Truy xuất ngày 15/12/2021, tại />Học lập trình nên biết 8 IDE online hữu ích này. (19/03/2019). Truy xuất ngày
15/12/2021 tại />
21