Xử lý ngoại lệ trong Python

Ngoại lệ (Exceptions)

Errors detected during execution are called exceptions.
Lỗi xảy ra trong khi chạy chương trình

Ví dụ:

ZeroDivisionError

This error is raised when the second argument of a division or modulo operation is zero.

>>> a = ‘1’
>>> b = ‘0’
>>> print int(a) / int(b)
>>> ZeroDivisionError: integer division or modulo by zero

ValueError

This error is raised when a built-in operation or function receives an argument that has the right type but an inappropriate value.

>>> a = ‘1’
>>> b = ‘#’
>>> print int(a) / int(b)
>>> ValueError: invalid literal for int() with base 10: ‘#’

To learn more about different built-in exceptions click here.

Xử lý ngoại lệ (Handling Exceptions)

The statements try and except can be used to handle selected exceptions. A try statement may have more than one except clause to specify handlers for different exceptions.

#Code
try:
print 1/0
except ZeroDivisionError as e:
print “Error Code:”,e

Output

Error Code: integer division or modulo by zero

Căn chỉnh chuỗi/văn bản trong Python

.ljust(width)

Trả về xâu được căn lên trái với kích thước width.

>>> width = 20
>>> print 'HackerRank'.ljust(width,'-')
HackerRank----------  

.center(width)

Trả về xâu được căn lề giữa với kích thước width.

>>> width = 20
>>> print 'HackerRank'.center(width,'-')
-----HackerRank-----

.rjust(width)
Trả về xâu được căn lề phải với kích thước width.

>>> width = 20
>>> print 'HackerRank'.rjust(width,'-')
----------HackerRank

Các thuật ngữ cơ bản khi tự học lập trình web

Nếu bạn mới bắt đầu học lập trình web, bạn sẽ cảm thấy khá lúng túng trước khá nhiều thuật ngữ mới trong lĩnh vực này. Tài liệu này sẽ giúp bạn làm quen với một số khái niệm lập trình web cơ bản, khởi đầu cho quá trình tự học lập trình web của bạn sau này được dễ dàng hơn.

WWW – World Wide Web

World Wide Web (WWW, thường được gọi tắt là Web) là một trong những dịch vụ được dùng rất phổ biến trên Internet. Được xây dựng chủ yếu trên nền văn bản, đồ họa và các hiệu ứng tương tác, Web càng được sử dụng phổ biến và giờ đây đã là một phần quen thuộc của cuộc sống. Tuy nhiên, để tạo được các trang web “động”, có tương tác với người dùng, thông tin được cập nhật thường xuyên, có kiểm tra dữ liệu nhập, có hiệu ứng chuyển động, … bạn phải lập trình cho các trang web. Lập trình web sẽ giúp cho các trang Web của bạn cuốn hút người dùng hơn, tạo ấn tượng với người xem hơn nhờ bạn có thể chủ động lập trình “điều khiển” các nội dung của trang Web theo ý mình.

HTTP – HyperText Transfer Protocol

HTTP, giao thức chuyển giao siêu văn bản trên Web, được xem như là một ngôn ngữ “nói chuyện” giữa Web clients và Web servers. Giao thức này là tập hợp các qui định dùng để trao đổi các tài liệu (văn bản, hình ảnh, âm thanh, video, các tập tin đa truyền thông,…) giữa Web server và trình duyệt Web. Người ta gọi giao thức HTTP là giao thức phi trạng thái (stateless) bởi mỗi lệnh đều được thực thi một cách độc lập, lệnh sau không biết gì về lệnh trước đó.

Kết quả hình ảnh cho link web

URL – Uniform Resource Locator

Khái niệm này ra đời cùng lúc với Internet, vấn đề đặt ra lúc đó là cách thức qui định đặt tên địa chỉ như thế nào nhằm mục đích để giúp cho người dùng dễ dàng truy cập đến nguồn tài nguyên trên Web. Vậy URL là gì?, đó chính là một địa chỉ trên Internet, cú pháp đầy đủ của URL có dạng : scheme://<host> [:port] [<path> [?<querystring>]] Trong đó:

  • scheme: lọai dịch vụ Internet, với dịch vụ thông dụng nhất là http dùng để truy cập tài nguyên tại các Web server;
  • host: địa chỉ máy chủ chứa tài nguyên (ví dụ www.w3schools.com, www.vnexpress.net,…);
  • port: cổng dịch vụ trên máy chủ, giá trị này có thể bỏ trống và có giá trị là 80 nếu lọai dịch vụ là http;
  • path: đường dẫn và tên của tập tin tài nguyên trên máy chủ;
  • querystring: các tham số được gửi kèm theo http để cung cấp thêm thông tin, phục vụ cho xử lý nào đó tại Web server.                                                                                                                                                         Đối với các trang web tĩnh, là các trang web nội dung thường ít được cập nhật sửa đổi, tham số querystring  thường không thấy.

Ví dụ: http://www.legend.net.uk/resources/gloss.html http://www.tuoitre.com.vn/Tianyon/Index.aspx?ArticleID=238657&ChannelID=3

HTML – HyperText Markup Language

Khi bạn sử dụng trình duyệt (Web browser) để duyệt trang Web nào đó bạn sẽ thấy trong trang Web luôn có các liên kết siêu văn bản – HyperText (một từ, một câu, một hình ảnh,… trong trang Web) mà khi click vào sẽ đưa bạn đến trang Web khác). Những liên kết kết siêu văn bản chính là đặc trưng của WWW nên các trang Web thường được gọi là các tài liệu siêu văn bản. Để xây dựng các tài liệu này, bạn sẽ sử dụng ngôn ngữ HTML (HyperText Markup Language – Ngôn ngữ đánh dấu siêu văn bản) là ngôn ngữ quy định cách định dạng văn bản để đưa lên Web cùng với sự xác định các mối liên kết siêu văn bản. Như vậy, trang web (trang HTML) là tập hợp gồm những dòng văn bản và các thẻ đánh dấu (Tag) theo cấu trúc và trình tự xác định. Các thẻ HTML này sẽ quy định cách hiển thị văn bản, hình ảnh…. trên trình duyệt để các trình duyệt Web có thể hiểu và hiển thị thông tin theo ý bạn. CSS – Cascading Style Sheets

Style Sheet là gì?

Là một tập hợp các qui định về cú pháp khai báo dùng để định dạng trang web, chính xác hơn là nơi dùng để định nghĩa các style. Giả sử, trong một trang web, bạn muốn tất cả các tag <h1> có chữ màu đỏ, thông thường bạn sẽ sử dụng thuộc tính style và khai báo cho từng tag <h1>. Nhưng đối với Style Sheet thì bạn sẽ khai báo một lần và áp dụng cho toàn bộ trang web hoặc cho cả website. Nói đơn giản hơn, Style Sheet giống như là một quy tắc dùng để “trang trí” trang web.

Cascading Style Sheets

CSS là một chuẩn của Internet do W3C định nghĩa và chính thức giới thiệu vào tháng 12/1996. Sở dĩ gọi nó là Cascading (xếp tầng) là vì hiệu ứng của style có thể được kế thừa từ các tag khác, nếu style được định nghĩa trong một tag cha thì các tag con (nằm trong tag cha) sẽ kế thừa style đó. Ví dụ: 3 dòng văn bản sau đều có màu đỏ, vì kế thừa style của tag <p>

<p style=”color:red”>

<b>Trung Tâm Tin Học</b> <br>

Đại Học Khoa Học Tự Nhiên TP.HCM<br>

<font size=”+4″><i>Thông báo chiêu sinh khóa 155</i></font>

Ngôn ngữ lập trình JavaScript 

JavaScript là ngôn ngữ kịch bản (scripting language) dùng để tương tác với các trang HTML dựa trên đối tượng (object-based scripting language ). Các chương trình JavaScript thường được nhúng (embedded) trực tiếp vào tập tin HTML bằng tag <script> hoặc tích hợp (integrated) vào trang web thông qua một tập tin được khai báo trong tag <link>.

JavaScript có một số đặc điểm sau:

  • Là một ngôn ngữ thông dịch(interpreted language), nghĩa là các script thi hành không cần biên dịch trước (precompile). Trình duyệt dịch script, phân tích và thi hành ngay tức thời.
  • Lập trình theo cấu trúc (Structured progarming)
  • Giống như C và Java, có phân biệt chữ HOA và thường Hiện nay đa số các trình duyệt đều hỗ trợ JavaScript nên các trang web có Javascript có thể chạy trên bất kỳ trình duyệt nào. Để học JavaScript một cách hiệu quả, bạn nên áp dụng phương pháp “học qua ví dụ” (Learning By Example), đương nhiên là bạn phải có nền tảng căn bản trước đó. Hiện nay trên internet bạn có thể tìm thấy vô số các đoạn JavaScript từ đơn giản đến phức tạp, bạn có thể lấy về dùng mà không cần phải tìm hiểu chi tiết tường tận, chỉ cần biết cách khai báo sử dụng trong trang HTML của mình là có thể quan sát để hiểu ý nghĩa của đoạn code đó.

Lập trình front-end

Lập trình viên Front – End là người xây dựng các chức năng giao tiếp, tương tác trực tiếp với người dùng. Khi bạn duyệt các trang web, từ font chữ, màu sắc cho tới các menu chọn và các thanh trượt, các hình ảnh chuyển động quảng cáo, các hiệu ứng chuyển màu hay di chuyển văn bản, hình ành… đều là tác phẩm của Lập trình viên Front – End. Các Lập trình viên Front-end sẽ chịu trách nhiệm thể hiện giao diện của trang web theo đúng yêu cầu thiết kế , những tương tác, chuyển động theo đúng ý tưởng sáng tạo sao cho mang lại cho người dùng những trải nghiệm giao diện ấn tượng, bắt mắt và phong cách nhất.

Front-end cơ bản

Lập trình front-end ở mức cơ bản chỉ cần thông thạo HTML, CSS, và JavaScript để làm chủ giao diện người dùng với font chữ, màu sắc, thanh trượt, thực đơn, hình ảnh, hiệu ứng tương tác,…

Kết quả hình ảnh cho front-end cơ bản

Front-end nâng cao 

Ngoài các kiến thức cơ bản, các lập trình viên front-end cần phải làm quen với các framework như Bootstrap để đảm bảo nội dung có thể hiển thị tốt trên mọi thiết bị khác nhau, các trình duyệt khác nhau và AngularJS để cải thiện tốc độ tương tác cũng như bổ sung các hiệu ứng chuyển động đẹp mắt, ấn tượng vào ứng dụng web một cách nhanh chóng hơn.

Kết quả hình ảnh cho Front-end nâng cao

Lập trình back-end

Lập trình web không chỉ có những cần giao diện ở front-end mà cần những dữ liệu, xử lý ở mức server. Hay nói cách khác, để có được những gì thể hiện trên website ở front-end phải có các dữ liệu, thông tin từ các chức năng do lập trình web back-end cung cấp. Từ “hậu trường”, lập trình viên back-end sẽ xây dựng và thực hiện các giải thuật để tính toán, truy cập và xử lý dữ liệu để cung cấp chính xác, nhanh chóng theo các yêu cầu nhận được.

Có rất nhiều ngôn ngữ để lập trình back end như: PHP, ASP.NET, Java, Python,… cho phép bạn viết các đọan mã lệnh (source code) mà sẽ được biên dịch và thi hành tại Web server, sau đó trả kết quả về client dưới dạng HTML, CSS và JavaScript. Với lập trình back-end, bạn có thể lập trình, xây dựng các trang web động, có tương tác với cơ sở dữ liệu và kết nối với các dịch vụ Web Service phục phục vụ đa dạng yêu cầu của người dùng trong thực tế.

Hiện nay, các thông tin tuyển dụng Lập trình viên back-end khá cao và thường yêu cầu ứng viên có thêm kiến thức, kinh nghiệm liên quan đến các framework MVC, có kiến thức về web server và các phần mềm quản lý phiên bản như Git/SVN.

Lập trình Full-stack

Nhưng để có được ứng dụng hoàn chỉnh, nếu chỉ có lập trình viết mã lệnh không thì chưa đủ. Bạn sẽ cần có cơ sở dữ liệu để lưu thông tin của ứng dụng, bạn cần có web server, hệ điều hành để có thể deploy ứng dụng mà từ đó người dùng có thể khai thác được. Tập hợp tất cả các phần mềm, công nghệ này tạo thành solution stack, hệ thống nền tảng để ứng dụng có thể hoạt động được.

Một số solution stack thông dụng

 

Kết quả hình ảnh cho LAMP-Stack

LAMP-Stack, được dùng khá phổ biến, hầu hết các website đều sử dụng stack này và các hosting cho PHP cũng đang dùng stack này.

Kết quả hình ảnh cho Một số solution stack thông dụng

WAMP-Stack tương tự như LAMP Stack nhưng khác ở hệ điều hành Windows. WAMP Stack được dùng trong học tập, nghiên cứu nhiều hơn do đã quá quen thuộc với hệ điều hành Windows.

Hình ảnh có liên quan

WINS – Stack này bao gồm các công nghệ của Microsoft. Trong đó Windows là hệ điều hành, web server là Internet Information Services c, .NET là môi trường phát triển ứng dụng khá phổ biến với ngôn ngữ lập trình hướng đối tượng C# và SQL Server là hệ quản trị cơ sở dữ liệu quan hệ. Đây là lựa chọn cho các giải pháp mang tính thống nhất vì việc phối hợp giữa các thành phần sẽ dễ dàng hơn và mang tính bảo mật khá ổn định hơn. Nếu bạn chọn mình trở thành Lập trình viên Full-stack, ngoài kiến thức lập trình back-end, bạn cần có kiến thức IT tổng quát và khả năng tìm hiểu sâu khi cần thiết bất kỳ vấn đề gì về hệ điều hành, Web Server, cơ sở dữ liệu, web framework. Bạn có thể tham khảo các giải pháp hiện nay đang áp dụng tại các doanh nghiệp tại Việt Nam để chọn cho mình hướng đi phù hợp.

Kết quả hình ảnh cho khach san new world Full-stack

Kết quả hình ảnh cho zing Full-stack

Chuyên gia thuật toán vô địch Facebook Hacker Cup giờ ra sao?

Facebook Hacker Cup là một kỳ thi Thuật Toán rất nổi tiếng của Facebook, và mỗi năm số người người tham dự ngày một đông. Một số người cho rằng, tham dự những kỳ “thi thố” để làm gì? Thật ra những người trong giới thuật toán tham dự các kỳ thi, nó không đơn thuần mang ý nghĩa “thi thố” hay “thể hiện” mà nó còn là dịp để các họ rèn giũa lại kiến thức của mình. Luyện “não” cũng giống như tập “gym” vậy, bạn luyện đều đặn và đúng cách “não” sẽ khỏe mạnh và làm việc được lâu dài. Ngược lại nếu bạn bỏ bê chúng, một ngày nào đó não sẽ có “bụng bia”
Nhà thơ Vũ Đình Liên trong bài thơ “Ông Đồ” đã từng thốt lên “Những người muôn năm cũ Hồn ở đâu bây giờ?” Khi ông không còn thấy những ông Đồ xuất hiện trong dịp lễ để cho các câu đối hay chơi chữ nữa. Vậy thì bạn có bao giờ tự hỏi rằng những người đạt giải kỳ thi này họ “ở đâu bây giờ?”.
Hãy cùng Big-O Coding tìm hiểu xem những nhà vô địch Facebook Hacker Cup ngày xưa hiện giờ họ ở đâu? làm gì? và công việc của họ như thế nào? nhé.

Petr Mitrichev

Anh là một lập trình viên người Nga, vô địch Facebook Hacker Cup vào các năm 2011, 2013 và 2017. Ngoài ra anh đã đạt rất nhiều thành tích ở những cuộc thi khác như Huy chương vàng IOI (2000, 2002) , huy chương vàng ACM ICPC World Final (2003, 2005), vô địch Google Code Jam(2006) và Topcoder Open (2006, 2013, 2015),… Hiện tại anh đang làm cho Google với vị trí kỹ sư về Google Search.

Tiancheng Lou

Anh là một lập trình viên người Trung Quốc, đoạt giải 3 Facebook Hacker Cup vào năm 2011 và 2012. Anh còn đạt những thành tích khác như vô địch Google Code Jam vào năm 2008 và 2009, đạt thứ hạng cao trên Topcoder và Codechef,.. Anh hiện đang là Software Engineer cho Google.

Khúc Anh Tuấn

Anh là một lập trình viên người Việt Nam,từng du học tại Đại học công nghệ Nayang Singapore, anh đã xuất sắc vượt qua các lập trình viên lừng danh toàn cầu giành vị trí thứ nhì Facebook Hacker Cup năm 2011. Anh hiện đang là Software Engineer cho Uber.

Tomek Czajka

Là một lập trình viên người Mỹ, anh tốt nghiệp ở đại học Purdue với tấm bằng Master of Science năm 2007. Anh đạt nhiều thành tích cao trong các kì thi về lập trình, phải kể đến như hạng nhì cuộc thi Facebook hacker cup năm 2012 và 2014, giải nhất cuộc thi TopCoder Open năm 2008, hạng 5 cuộc thì Google Code Jam năm 2003 và 2004 . Anh hiện đang làm việc tại Tập đoàn Công nghệ Khai phá Không gian (Space Exploration Technologies Corp) viết tắt là SpaceX với vị trí kỹ sư phần mềm. Trước đó anh từng làm việc cho Google (2007 – 2013).

Jakub Pachocki

Anh tốt nghiệp Cử nhân Khoa học máy tinh ở đại học Warsaw (Ba Lan) năm 2013, sau đó anh lấy được tấm bằng Tiên Sĩ về Khoa học máy tinh năm 2016 tại đại học Carnegie Mellon với bài báo “Graphs and Beyond: Faster Algorithms for High Dimensional Convex Optimization”. Anh đã đạt giải nhì tại cuộc thi Facebook Hacker Cup năm 2012, anh đã từng 2 lần thực tập cho Facebook (2011,2012). Năm 2016 – 2017 ,anh làm việc tại đại học Harvard. Hiện tại anh đang nghiên cứu viên về lĩnh vực trí tuệ nhân tạo tại OpenAI (San Francisco)

Gennady Korotkevich

Còn được biết đến với biệt danh “tourist”, anh hiện đang học ở đại học tổng hợp ITMO ở Nga. Korotkevich tham gia nhiều cuộc thi và đã đạt được rất nhiều thành tích, như vô địch Facebook Hacker Cup năm 2014 và 2015, vô địch TopCoder Open năm 2014, vô địch Google Code Jam trong 4 năm liên tiếp (2014 – 2017), vô địch ACM-ICPC World Finals năm 2013 và 2015.

Dmytro Soboliev

Anh là người Ukraine, anh tốt nghiệp thạc sĩ về lĩnh vực toán học ứng dụng ở Viện Bách khoa Kiev. Anh đã xuất sắc giành được Giải nhì Facebook Hacker Cup 2015. Anh từng là Junior C++ Developer ở công ty Luxsoft (2012 – 2014). Hiện anh đang làm ở Amazone Web Services với ví trí Software Development Engineer.

Gleb Evstropov

Anh tốt nghiệp khoa Khoa học máy tinh và điểu khiển học tại Đại học Tổng hợp Quốc gia Moskva , anh đạt nhiều thành tích cao trong các cuộc thi lập trình như Huy chương vàng tại ACM ICPC World Finals 2014 và 2015, giải ba cuộc thi Facebook Hacker Cup 2015, huy chương vàng IOI 2010. Hiện anh đang là giảng viên tại trường đại học nghiên cứu quốc gia ở Moskva, Nga.

Hướng dẫn sử dụng IntelliJ

Phần 1: Mở project, Viết chương trình và chạy.

Bước 1.

Chọn mở Project mới

Bước 2.

Tạo project kiểu Maven cho Java 1.8. Chú ý có 03 nơi cần chọn đúng trong như hình vẽ. (1) Maven, (2) KHÔNG tick ‘Create from archetype’, (3) chọn Project SDK 1.8.

Bước 3. Đặt tên project Maven (HelloWorld) và nhóm của project (ví dụ oop, bạn có thể lấy tên khác, chẳng hạn nick của bạn)

Bước 4.

Đặt tên project IntelliJ, tên này sẽ trùng với tên thư mục. Có thể trùng với tên project Maven. Bạn chỉ cần gõ vào ô Project name, phần còn lại sẽ được tự điền.

Bấm Finish, ta có khung project đã được tạo sẵn, nó được quản lý theo hai kiểu: (1) project kiểu IntelliJ do IntelliJ điều khiển, và (2) project kiểu Maven mà khi ra ngoài môi trường IntelliJ ta vẫn sử dụng được, chẳng hạn chạy bằng dòng lệnh hoặc mở tại Eclipse, NetBean…..

Trong đó,

  1. src/main/java: nơi chứa mã nguồn chương trình
  2. src/test/java: nơi chứa mã nguồn của test
  3. pom.xml tại thư mục gốc của project là file cấu hình của project maven, khi cần chỉnh cấu hình project thì sẽ sửa nội dung của những file này. Nội dung file pom.xml đó đang được hiển thị tại tab ‘mHelloWorld’ với ý nghĩa m là Maven, HelloWorld là tên của Maven project.
  4. Bạn cần click vào link Enable Auto-Import, để từ nay, mỗi khi bạn sửa nội dung của file pom.xml thì cấu hình project IntelliJ (nằm trong thư mục .idea) sẽ tự thay đổi theo.
  5. Để cấu hình maven chạy cho Java 1.8, quy định mã nguồn dạng UTF-8, và khai báo sử dụng thư viện JUnit để viết test, bạn copy đoạn sau vào vị trí số 5 tại hình trên.

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>

 

Bước 5. Tạo class đầu tiên: Dùng chuột phải tại thư mục main/java, chọn New / Java Class từ popup.

 

  1. Nhập tên class Hello.
  2. Viết chương trình Hello
  3. Chạy chương trình. Click chuột phải vào tên hàm main, chọn Run “Hello.main()…”. Có thể dùng tổ hợp phím Ctrl+Shift+F10.

Chương trình sẽ được dịch, đóng gói…. Và chạy ra kết quả:

Từ đây, nếu muốn chạy lại, có thể dùng phím tắt, chuột phải như trước, hoặc click vào hình tam giác màu lục bên phải ô Hello.

Phần II: Viết test và chạy test.

  1. Tạo một class nằm trong thư mục test/java (click chuột phải để mở pop up), với tên HelloTest
  2. Viết test. Viết code. Sinh mã.

Mỗi test được viết trong 1 hàm, mỗi hàm đó cần được bắt đầu bằng annotation @Test. Gõ vào trong class HelloTest nội dung @Test, IntelliJ sẽ gợi ý các thư viện cần sử dụng.

Chọn (org.junit) Dòng sau sẽ được điền tự động vào file HelloTest.java

import org.junit.Test;

Dòng đó có nghĩa file này sẽ dùng đến class Test trong gói thư viện org.junit. Đây cũng là ví dụ về việc IntelliJ gợi ý người dùng và hỗ trợ điền code.

Viết nốt phần còn lại của test, test này ta muốn định nghĩa yêu cầu về một hàm add của lớp Hello có nhiệm vụ tính tổng hai số. Dòng duy nhất trong hàm testAdd có tác dụng gọi hàm Hello.add(1,2), lấy kết quả trả về và so sánh với 3. Ở đây, 3 là kết quả trông đợi (expected) vì 1+2=3. Giá trị trả về của hàm Hello.add(1,2) là kết quả thực tế. Hàm assertEquals (của lớp Assert trong thư viện org.junit) so sánh kết quả trông đợi với kết quả thực tế, nếu bằng nhau thì test đó đạt, nếu không bằng nhau thì test đó không đạt.

Chú ý các phần màu đỏ, đó là báo hiệu về các lỗi biên dịch. assertEquals là một hàm của lớp Assert trong thư viện org.unit, ta chưa khai báo import nên bị báo đỏ. Hàm add của Hello chưa được viết, nên cũng bị báo lỗi.

Tại mỗi điểm có lỗi, đưa con trỏ vào đó, bấm tổ hợp Alt-Enter sẽ có gợi ý sửa lỗi hoặc sinh mã.

Ví dụ với assertEquals, hãy chọn Static Import….. để IntelliJ thêm lệnh import.

Vì có nhiều thư viện cung cấp hàm assertEquals, ta có vài lựa chọn. Hãy chọn import Assert.assertEquals cho Maven

Kết quả là có thêm lệnh import được thêm vào code:

import static junit.framework.Assert.assertEquals;

 

Lỗi còn lại là hàm add chưa có. Hãy đưa con trỏ vào từ add màu đỏ, bấm Alt-Enter. IntelliJ sẽ gợi ý tạo phương thức add.

Hãy nhấn tiếp Enter để đồng ý. Bạn sẽ thấy hàm add rỗng được tạo ra tại class Hello. Hãy tiếp tục nhấn Enter theo từng bước để đồng ý với code gợi ý, trước khi Enter có thể gõ nội dung mới thay cho nội dung hiện đang được bôi đen.

Chẳng hạn cuối cùng code của hàm add như sau (ta tạm để nguyên nội dung return 0):

public static int add(int first, int second) {
return 0;
}

 

Để quay về HelloTest, bạn có thể tự chọn tab hoặc click mũi tên Back hoặc dùng tổ hợp phím Ctrl+Alt+Left.

  1. Chạy test.

Để chạy test trong HelloTest, click chuột phải vào tên class HelloTest, chọn Run HelloTest.

Kết quả: testAdd không đạt, đáng ra phải trả về 3 thì lại trả về 0

Bạn tự sửa nội dung hàm add cho đúng, rồi chạy lại test để có kết quả đạt như sau:

Đến đây, bạn đã có hai cấu hình chạy: Hello để chạy chương trình Hello (hàm main); HelloTest để chạy các test trong class HelloTest. Chọn cấu hình nào thì nút tam giác bên phải  sẽ có tác dụng chạy cấu hình đó.

Tiếng Anh chuyên ngành Công nghệ thông tin

Computer science: Khoa học máy tính

 

Graphs (Đồ thị)

 

Directed Graphs

Undirected Graphs

Shortest Paths

Spanning Trees: Cây khung

Deep Learning là gì?

Bốn năm qua, thế giới đã và đang được chứng kiến những bước tiến khổng lồ về chất lượng cùng “độ thần thánh” của các sản phẩm công nghệ chúng ta vẫn sử dụng hàng ngày. Bạn đã bao giờ đặt ra câu hỏi về những tiện ích đó chưa? 

Đầu tiên phải kể đến công nghệ nhận diện giọng nói được nâng cấp rất nhiều so với trước đây. Nhờ có nó mà người dùng hiện nay có thể sử dụng khẩu lệnh để tương tác nhiều hơn với các thiết bị thông minh.

Những trợ lý ảo giọng nói như Alexa của Amazon, Siri của Apple, Cortana của Microsoft cùng các hệ thống nhận diện giọng nói có mặt trên hầu như mọi sản phẩm của Google đang đồng loạt nở rộ trên nhiều nền tảng, giúp người dùng thực hiện nhiều tác vụ khác nhau. Ở phía bên kia địa cầu, gã khổng lồ tìm kiếm Baidu cũng tỏ ra không hề kém cạnh với thống kê cho thấy người dùng các sản phẩm của công ty đã sử dụng nhận diện giọng nói nhiều gấp ba lần chỉ trong vòng 18 tháng qua.

Ngoài nhận diện giọng nói, dịch tự động và các công nghệ xử lý ngôn ngữ tự nhiên khác cũng đang ngày càng ưu việt hơn với những ông lớn như Google, Microsoft, Facebook, Baidu,… liên tục tung ra những tính năng độc đáo. Google Translate hiện nay có khả năng xử lý câu văn nói từ một sang 32 ngôn ngữ khác, dịch văn viết qua lại giữa 103 ngôn ngữ, thậm chí có thể dịch (tức thời) real-time ngay khi bạn lia ống kính điện thoại qua một tấm biển quảng cáo tiếng nước ngoài, như hình ảnh dưới đây.

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Tính năng dịch real-time của Google Translate

Và rồi chúng ta lại có công nghệ nhận diện hình ảnh – tính năng đã có mặt rộng rãi trên các sản phẩm của 4 gã khổng lồ nêu trên. Bạn có thể tìm kiếm và sắp xếp những bức ảnh của mình mà không cần phải gắn thẻ (tag) chúng, mà chỉ dựa cần trên những gì hiện diện trong hình, từ cụ thể như một chú chó, cảnh tuyết rơi cho đến trừu tượng như những cái ôm. Nhiều sản phẩm trong số này thậm chí còn có thể đọc mô tả lại các yếu tố trên bức ảnh cho người dùng khiếm thị.

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Mỗi khi bạn yêu cầu sắp xếp một album ảnh chó từ kho ảnh của mình, ứng dụng lưu trữ ảnh phải xác định được mọi loại chó, từ giống Chihuahua cho đến giống chó chăn cừu Đức, trên bất cứ phông cảnh nào, đồng thời loại bỏ được những bức hình tương tự có sói hay mèo. Công nghệ này cũng không chỉ dừng lại ở chuyện sắp xếp ảnh hay gợi ý tag mặt bạn bè trên Facebook, mà còn lan sang cả các lĩnh vực như y tế, robot, drone và xe tự lái.

Trong khi nhiều startup về y sinh tung ra những sản phẩm điện toán có khả năng đọc X-quang, MRI và phim chụp CT nhanh chóng và xác định bệnh chuẩn xác hơn cả bác sỹ trị liệu, các công ty công nghệ lớn như Uber, Google, Baidu lại đang định nghĩa lại cách chúng ta di chuyển qua những chiếc xe không người lái vẫn đang ngày ngày lăn bánh thử nghiệm trên các cung đường Âu Mỹ. Những phần mềm, cỗ máy phi thường này đã làm được điều đó như thế nào?

Sự bùng nổ của Deep Learning

Điều mà nhiều người không nhận ra là tất cả các công nghệ này, về mặt bản chất đều xuất phát từ cùng một nguồn gốc. Chúng được phát triển từ “deep learning”, một nhánh đặc biệt trong trí tuệ nhân tạo (AI). Nhiều nhà khoa học vẫn thích gọi nó theo tên nguyên gốc là deep neural network (mạng neuron sâu).

Trên thực tế, chẳng kỹ sư nào có thể lập trình cho máy tính thực hiện được những tính năng đề cập ở trên. Thay vào đó, họ tạo ra một thuật toán giúp máy tính có khả năng tự học rồi cho nó tiếp xúc với hàng terabyte các dữ liệu liên quan – chẳng hạn như vài trăm ngàn bức ảnh các loại chó, hay những băng ghi giọng nói kéo dài hàng năm trời.

Sự tiếp xúc liên tục này sẽ dần dần “huấn luyện” máy tính và khiến nó tự nhận diện được những hình ảnh, giọng nói được yêu cầu. Cũng giống như cách một đứa trẻ học hỏi về thế giới xung quanh, sau một thời gian dài được xem những hình ảnh mặc định là chó hay nghe cách người ta phát âm từ gì đó, máy tính sẽ “nhìn” được đâu là chó và “nghe” được người ta đang nói gì.

Hình dưới đây mô tả cách các mạng Neuron hoạt động như thế nào

Tìm hiểu về công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy trong lịch sử loài người - Ảnh 6.

Mạng neuron sâu thực chất không phải một khái niệm mới, mà đã xuất hiện từ những năm 1950. Rất nhiều đột phá về các thuật toán trong đó diễn ra vào hai thập niên 1980 và 1990.

Lý do khiến chúng mãi đến giờ mới lại nổi lên, chính là vì các nhà khoa học cuối cùng cũng đã có thể tận dụng tất cả sức mạnh điện toán kết hợp với lượng dữ liệu khổng lồ các hình ảnh, video, âm thanh và file text trên Internet – những yếu tố quyết định giúp mạng neuron có thể hoạt động hiệu quả.

Frank Chen, đối tác điều phối của quỹ đầu tư công nghệ danh tiếng Andreesen Horowitz thậm chí còn so sánh những yếu tố trên với cuộc bùng nổ kỷ Cambria trong lĩnh vực deep learning.

Những bước tiến về phần cứng đã mở màn cho cơn địa chấn khổng lồ về deep learning. Sức mạnh điện toán leo thang vượt bậc trên các thiết bị không chỉ xuất phát từ định luật Moore, mà còn đến từ sự xuất hiện của vi xử lý đồ họa (GPU) của NVIDIA – thế hệ chip đầu tiên có khả năng mang lại những trải nghiệm thị giác tuyệt vời cho người dùng.

Ngày nay, ngoài việc cung cấp những trải nghiệm game 3D ấn tượng, GPU còn được sử dụng rộng rãi để tăng tốc độ tính toán trong các lĩnh vực như hình ảnh y khoa, điện từ, mô hình tài chính, nghiên cứu khoa học hiện đại, nhận diện hình ảnh,… Khi vận hành các thuật toán deep learning, so với việc chỉ sử dụng CPU truyền thống, GPU giúp máy tính hoạt động mượt mà hơn từ 20-50%.

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Yếu tố thứ hai – lượng dữ liệu khổng lồ từ kho ảnh, video, âm thanh,… đồ sộ từ Internet và các thiết bị IoT hiện nay – đã nhen nhóm kể từ khi Internet mới ra đời, nhưng chỉ thực sự đạt độ chín trong 1-2 thập kỷ vừa qua – khi mà số cư dân mạng và tốc độ phủ sóng smartphone tăng nhanh đến chóng mặt.

Hai chất xúc tác nêu trên đã châm ngòi cho cuộc cách mạng mới về deep learning: Theo số liệu của CB Insights, các startup ứng dụng công nghệ AI được rót vốn quý vừa qua đã ở mức cao kỷ lục trong lịch sử, với con số tổng cộng lên đến hơn 1 tỷ USD. Chỉ tính riêng trong quý II năm 2016, những startup này đã tổ chức 121 vòng gọi vốn, một cú nhảy vọt so với mức 21 vòng cùng kỳ năm 2011.

➡️  Chuẩn bị việc làm trong kỉ nguyên trí thông minh nhân tạo

Năm 2012, Google mới chỉ tiến hành 2 dự án deep learning, nhưng hiện nay con số này đã lên tới hơn 1000, trên hầu hết các sản phẩm như Tìm kiếm, Android, Gmail, Translate, Youtube và xe tự lái.

Năm 2011, siêu máy tính Watson của IBM mới chỉ sử dụng AI để đánh bại những người chơi giỏi nhất trong gameshow Jeopardy! nhưng nay cũng đã được tích hợp thêm deep learning vào hơn 30 nhóm dịch vụ mà hệ thống này cung cấp.

Giới đầu tư, những người chỉ cách đây 5 năm thôi, thậm chí còn chẳng biết deep learning là gì, cũng bắt đầu phải dè chừng những startup ứng dụng deep learning vào công nghệ của họ. Giáo sư Andrew Ng., giám đốc trung tâm nghiên cứu của Baidu thì cho rằng “AI và deep learning chính là một thứ điện năng mới có khả năng cách mạng hàng loạt ngành công nghiệp tương tự như cách mà các mạng lưới điện đã làm hơn 100 năm về trước.”

Deep Learning có quan hệ thế nào với AI?

Cho tiện hình dung, hãy nhìn vào lược đồ dưới đây để thấy rõ mối quan hệ giữa AI, machine learning và deep learning.

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Hãy tưởng tượng những gì deep learning có thể làm dưới dạng ghép nối đầu vào (input) với đầu ra (output). Bạn có thể đưa vào hệ thống một đoạn file âm thanh và có được một file phụ đề ghi lại nội dung trong đó ở đầu ra.

Trong một trường hợp khác, bạn có thể đưa vào hệ thống thật nhiều email, rồi yêu cầu đầu ra phân loại xem đâu là email spam. Hoặc bạn cũng có thể đưa vào hệ thống các hồ sơ xin vay tín dụng, rồi yêu cầu bản phân tích về khả năng hoàn trả của đối tượng ở đầu ra.

Tất cả những gì bạn cần làm là đưa vào hệ thống deep learning một lượng lớn dữ liệu và “lấy” những thứ mình cần ở đầu ra. Theo cách này, miễn là bạn có đủ dữ liệu để nạp vào hệ thống, tiềm năng ứng dụng và cách mạng hóa các ngành công nghiệp của deep learning là vô biên.

Deep Learning có thể làm những gì?

Nếu bạn thấy các tính năng như nhận diện giọng nói khi dùng voice search Google hay nhận diện hình ảnh bạn bè để gợi ý tag họ trên Facebook chưa có gì quá đột phá, thì hãy nhớ rằng đây mới đang là thời kỳ bình minh của kỷ nguyên deep learning và AI mà thôi. Deep learning còn rất nhiều tiềm năng to lớn mà trong khuôn khổ bài viết, chúng ta chỉ có thể điểm qua một số ví dụ nổi bật dưới đây.

Đôi mắt cho người mù

Deep learning trong tương lai chắc chắn sẽ không dừng lại ở việc nhận diện được các hình ảnh trên máy thông thường. Những chiếc máy tính sẽ sớm có thể nhận biết từng sự vật có mặt trong khung cảnh và mô tả lại chúng.

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Một khi máy tính có thể nhận diện được mọi thứ với mức độ chi tiết không kém gì con người thì chẳng có lý do gì nó không thể nghe/nhìn thay những người dùng khiếm thính/khiếm thị. Trên thực tế, Baidu đã phát triển Baidu Light, một thiết bị đeo có thể chụp ảnh mọi thứ xung quanh và trình bày caption mô tả chúng cho người dùng.

Thay đổi cách thiết kế các sản phẩm Robot và IoT

Các nhà nghiên cứu hiện nay đã có thể nâng cấp độ chính xác trong nhận diện giọng nói từ 89% lên 99%. 10% nghe có vẻ ít ỏi này thực chất sẽ thay đổi toàn bộ cuộc chơi.

Chưa cần kể đến một lượng lớn dân số mù chữ trên thế giới có thể tiếp cận sớm với các thiết bị thông minh như smartphone, khả năng nhận diện này rõ ràng đang mở đường cho những nền tảng giao thức qua giọng nói giữa con người với máy tính, cho phép chúng ta trò chuyện và ra khẩu lệnh cho những chiếc smartphone, xe hơi, các món đồ gia dụng thông minh hay thậm chí là cả chính ngôi nhà mà chúng ta sống mà không còn cần đến những chiếc màn hình cồng kềnh.

Xa hơn nữa, các robot giúp việc trong tương lai có thể hoàn toàn “nghe hiểu” con người và “nhìn” được vạn vật xung quanh để thực hiện các tác vụ ở mức chính xác cao.

Hệ thống gợi ý trên các nền tảng

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Các nền tảng lớn hiện nay như Facebook, Amazon, Netflix, Youtube, Coursera,… đều có hệ thống gợi ý (recommend) rất mạnh, giúp gia tăng đáng kể độ tương tác của người dùng. Cụ thể, chúng dựa trên các dữ liệu người dùng phát sinh ra khi dùng để gợi ý thêm những sản phẩm họ sẽ thích (trên các nền tảng mua sắm), những thước phim họ sẽ muốn xem (trên Netflix, Youtube), các bài quảng cáo/được tài trợ phù hợp (trên Facebook) hay các khóa học người học quan tâm (trên các nền tảng học online như Coursera, edX,…).

“Oanh tạc” ngành tài chính

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Tài chính là một trong những lĩnh vực chủ chốt sẽ chứng kiến nhiều tác động của AI và deep learning. Các công ty trong ngành hiện đã và đang sử dụng các thuật toán dự đoán các xu hướng trên thị trường chứng khoán, chuyển đổi dữ liệu an toàn hơn cho đến ngăn chặn kịp thời các hành vi lừa đảo qua giao dịch.

Trong tương lai, nhiều ngân hàng và các tập đoàn tài chính có thể sẽ đồng bộ chatbot vào dịch vụ của họ để cung cấp cho khách hàng những tư vấn cần thiết ở mọi nơi, mọi lúc. Bằng khả năng xử lý ngôn ngữ tự nhiên ưu việt, các chatbot tư vấn tài chính sẽ phân tích để xác định thói quen tiêu dùng, đầu tư của họ để đưa ra những lời chỉ dẫn phù hợp và cá nhân hóa nhất có thể.

Cách mạng ngành y tế

Deep learning có thể tạo ra rất nhiều đột phá trong rất nhiều phân mảng y tế khác nhau. Có thể điểm qua:

Enlitic là một startup y tế đang sử dụng deep learning để phân tích, xác định bệnh lý từ các phim chụp CT và MRI. Trong một số thử nghiệm trước đây, tuy chưa chính thức được cấp phép hoạt động, nhưng các thuật toán học sâu của Enlitic đã thể hiện tốt hơn cả 4 bác sỹ X-quang tham gia khi xác định được chính xác các khối u lành tính và ác tính qua ảnh phim.

Trong khi đó, startup Merck và Atomwise lại đang ứng dụng deep learning vào việc đẩy nhanh tốc độ nghiên cứu các loại thuốc điều trị hiện nay. Thay vì phải thử nghiệm từng loại chất như trước đây, các nhà khoa học có thể sử dụng mạng thần kinh nhân tạo kiểm tra hình ảnh 3D của hàng ngàn phân tử chất có tiềm năng được đưa vào thành phần điều chế thuốc và dự đoán mức độ phù hợp trong việc khống chế mầm bệnh của chúng.

Một tiềm năng khác của deep learning trong lĩnh vực này là phát triển robot phẫu thuật với độ chính xác cao và có thể nhận khẩu lệnh thời gian thực (real-time) từ bác sỹ điều khiển.

➡️  Những công bố quan trọng tại hội nghị Qualcomm 4G/5G Summit – Hong Kong

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Tuy nhiên, trong khi các ứng dụng trên mới chỉ tập trung vào nâng cấp những gì con người đang làm thì startup non trẻ Freenome lại đang nghiên cứu những thứ con người chưa làm được: xác định ung thư qua mẫu máu của người bệnh. Với sức mạnh của deep learning, Freenome có thể yêu cầu máy tính tìm ra những điểm tương đồng giữa các DNA tự do trong mạch máu (cell-free DNA) và các tế bào ung thư. Công ty cho biết họ đã chứng kiến những dấu hiệu khả quan đầu tiên mà các nhà nghiên cứu ung thư hiện nay vẫn chưa nhìn ra.

Lý giải điều này, Vijay Pande, lãnh đạo mảng đầu tư công nghệ sinh học của Andreesen Horowitz, cho biết nếu như một bác sỹ X-quang có thể xem được hàng ngàn tấm phim chụp trong suốt sự nghiệp của mình, thì một chiếc máy tính có thể xem được hàng triệu tấm như vậy trong một thời gian ngắn.

Chúng vượt trội hơn đơn giản là vì được tiếp xúc với lượng dữ liệu lớn đến mức con người không thể “tiêu hóa” nổi. Kết quả cuối cùng là ngoài chất lượng tăng lên và giá thành giảm xuống, các dịch vụ y tế trong tương lai còn trở nên minh bạch và dễ tiếp cận hơn rất nhiều.

AI và Deep Learning có thực sự đáng sợ?

Trước những đột phá hàng loạt trong lĩnh vực deep learning nói riêng và AI nói chung, vấn đề gây tranh cãi muôn thuở vẫn là liệu máy tính và robot có khi nào sẽ xâm chiếm và kiểm soát loài người?

Dẫn đầu luồng quan điểm lạc quan về tương lai AI là hàng loạt nhân vật đầu ngành đến từ các tổ chức lớn như IBM, Google, ĐH Stanford, Baidu,… Theo Guru Banavar, giám đốc nghiên cứu của IBM thì về lâu dài, AI chủ yếu vẫn sẽ cùng con người giải quyết những vấn đề nhức nhối như dịch bệnh, đói nghèo… qua các đột phá về y sinh, giáo dục và ứng dụng trong nông nghiệp, tài chính, kinh doanh… Chúng ta cũng không cần phải quá lo lắng về khả năng xâm chiếm của AI vì có thông minh đến đâu thì các máy tính cũng sẽ không có tri giác như con người.

Geoffrey Hinton, một trong những nhà khoa học tiên phong trong lĩnh vực này cho biết: “Ngay cả những mạng neuron lớn nhất hiện nay cũng vẫn nhỏ hơn não người hàng trăm lần.”

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Về cơ bản, những cỗ máy AI hơn con người ở khả năng thu nạp và khai phá một lượng lớn dữ liệu cũng như ghi nhận được các xu hướng và các kiểu mẫu (pattern) đặc trưng trong thời gian ngắn, chứ không hề có tư duy độc lập như con người. Điều này có nghĩa là chúng không thể tự đặt câu hỏi về những gì chúng làm hay hiểu được tại sao chúng lại làm những việc đó.

Giáo sư Andrew Ng. của Baidu cũng có cùng nhận định khi cho rằng: “Có một sự khác biệt rất lớn giữa sự thông minh và cảm quan tri giác. Các phần mềm có thể trở nên thông minh hơn, nhưng sau cùng thì chúng vẫn không hề có tri giác.” Hơn thế nữa, như bất cứ cỗ máy nào, các robot cũng sẽ có lúc hết sạch năng lượng chứ không thể hoạt động mãi mãi. Chủ tịch điều hành Eric Schmidt của Google thậm chí còn phát biểu điều này một cách hài hước rằng nếu một ngày robot có nổi dậy thì “chẳng lẽ con người không nhận ra mà tắt chúng đi sao?”

Trong khi đó, những người không trực tiếp nghiên cứu trong ngành lại mang góc nhìn bất an hơn về công nghệ này. Elon Musk và nhà vật lý Stephen Hawking đều từng chia sẻ về lo ngại con người có thể tạo ra những cỗ máy AI khủng khiếp đến mức không thể kiểm soát nổi.

Tác giả người Mỹ James Barrat cũng chỉ ra trong cuốn sách nổi tiếng Our Final Invention của ông rằng AI, cũng như công nghệ phân hạch hạt nhân, có thể trở thành một con dao hai lưỡi khi bị sử dụng sai hướng. Ở mức độ cao cấp, AI thậm chí có thể nguy hiểm hơn cả hạt nhân vì chúng đã và đang được đưa vào các vũ khí quân sự như drone tự lái và robot chiến đấu.

Tại biên giới Hàn Quốc, người ta hiện đang sử dụng SGR-1, một robot canh gác với các cảm biến nhiệt và chuyển động có thể nhận diện mục tiêu tình nghi từ khoảng cách hơn 2 dặm. Hiện tại, SGR-1 vẫn phải chờ hiệu lệnh từ con người mới bắt đầu kích hoạt ngắm bắn, nhưng vấn đề ở đây là điều gì sẽ xảy ra nếu các robot như vậy có thể tự động bắn mà không cần sự thiệp của con người?

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Theo Noel Sharley, nhà hoạt động dẫn đầu chiến dịch Stop Killer Robots thì các lãnh đạo quân đội sẽ ngày càng gửi nhiều robot ra tiền tuyến để giảm thiểu tổn thất về binh lính và đây mới chính là mối nguy thực sự. Hầu hết các quốc gia, bao gồm cả Nga, Trung Quốc và Hàn Quốc, đều đang phát triển thứ công nghệ có khả năng phá vỡ an ninh toàn cầu này. “Tương lai sẽ ra sao nếu chúng ta cứ liên tục xây dựng những con robot chiến đấu và hủy diệt lẫn nhau?”, ông đặt câu hỏi.

Cuộc tranh luận gay gắt giữa hai quan điểm trên có lẽ sẽ còn rất lâu nữa mới đi đến hồi kết, nhưng dù thế nào thì ở thời điểm hiện tại, chúng ta cũng chỉ có thể căn cứ vào những gì đã biết để nhận định về lo ngại này. Những mối hoài nghi không phải là không có cơ sở và những người lạc quan về AI cũng không phải là hoàn toàn phớt lờ những phương án phòng trừ viễn cảnh đen tối đó.

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy

Tiêu biểu trong số này là những dự án như OpenAI, startup phi lợi nhuận do Elon Musk và Sam Altman, chủ tịch vườn ươm khởi nghiệp Y Combinator, sáng lập với sứ mệnh nghiên cứu và cung cấp mã nguồn AI cho tất cả mọi người tiếp cận để “AI không rơi vào tay một nhóm độc quyền thiểu số nào”.

Thời gian gần đây, liên minh phát triển AI do Google, Facebook, Microsoft, IBM và Amazon đi đầu cũng đã chính thức được thành lập với mục tiêu cùng nhau hỗ trợ việc nghiên cứu các giải pháp về đạo đức, tính minh bạch và bảo mật cá nhân trong quá trình ứng dụng công nghệ này. Chúng ta cũng có quyền hy vọng vào những hiệp ước AI mà các nước trên thế giới có thể chung tay thiết lập trong một tương lai không xa.

Lo sợ về AI không có gì là vô lý, nhưng nếu nhìn nhận một cách công bằng thì hầu như chẳng công nghệ nào là không có hai mặt của nó. Việc một công nghệ trở nên ra sao, xét cho cùng, vẫn chủ yếu phụ thuộc vào cách con người kiểm soát cũng như sử dụng nó. Và AI hay deep learning – nguồn điện mới của nhân loại – chắc chắn cũng không phải là một ngoại lệ.

Deep Learning: công nghệ đang giúp cả thế giới phát triển với tốc độ chưa từng thấy