Giúp đỡ người khiếm thị muốn học lập trình

Cần sự trợ giúp của anh em ạ, tuy nó hơi bị lạc đề nó cũng gần như không liên quan lắm về chủ đề này nhưng có lẽ sẽ giúp ích cho cộng đồng nhiều ạ:

Em đang biên soạn lại tài liệu lập trình C cho người khiếm thị và em đang gặp khó trong quá trình biên dịch và chạy chương trình C trên vs code. Nếu anh em nào có nhã hứng về vụ này có thể giúp em ạ. Do trước đây em còn đi học thì giáo trình nhà trường họ sử dụng dev c++ để làm editor viết c. Tuy nhiên, ide này không accessible cho lắm ạ. Để tiện hơn thì nếu có thể chuyển đổi những thứ đó thành HotKey và comment line thì càng tốt ạ vì do em sử dụng screen reader và chủ yếu tương tác thông qua bàn phím chứ không hề dùng chuột nên sẽ mất thời gian để chuyển đổi ạ. Em cảm ơn.

1 Like

Mình thấy nội dung hơi lan man, vấn đề của bạn là học BE? Thấy bạn reply comment và viết comment rất dài dòng thì mình đoán khả năng % bạn nhìn thấy là có chứ chưa thể gọi là không thể nhìn thấy được đúng không?

1 Like

Như em đã đề cập ở trên, em không nhìn thấy hoàn toàn và sử dụng screen reader để tương tác. Thế nên, mới có chuyện là phải chuyển đổi mọi thứ thành hotKey và comment line để dễ thao tác chứ nếu em nhìn thấy thì đã dùng chuột rồi. Do đó, em mới cần mọi người giúp đỡ.
Trong quá trình học, nếu em nói ngắn gọn cộc lốc, em sẽ khiến cho người khác khó hiểu, hoặc có thể hiểu nhầm.

Nếu anh cần thì có thể tìm hiểu qua NVda. Em hi vọng là anh sẽ hiểu nó. Em rất mong tìm được cách để biên dịch và chạy chương trình C trên VS Code thông qua screen reader với điều kiện là phải sử dụng được thông qua hotKey và command line.

Em sẽ chia sẻ một blog của một bạn khiếm thị đang làm cộng tác ở FreeCodeCamp. Bản dịch này do chị Điệp ở eJOY dịch, bản dịch tuy vẫn chưa sát nghĩa cho lắm nhưng vẫn có thể hiểu tạm vấn đề.


Tôi là 1 coder. Tôi bị mù. Mù như dơi. Và sinh ra tôi đã bị vậy rồi.
Khi tôi nói vậy với những người bạn bình thường khác, những người chưa bao giờ bị mất thị lực, họ sẽ hỏi tôi như sau:

  • Làm sao anh đọc được dòng code của tôi?
  • Trời! Làm sao anh lập trình được?
  • Cậu có nằm mơ không?

Vì tôi được hỏi như vậy nhiều rồi nên tôi sẽ trả lời cả 3 câu trong bài blog này. Tôi sẽ cố gắng giúp bạn hình dung được làm sao một người khiếm thị có thể lập trình và làm việc trong thế kỷ 21 này.

Nhiều người nghĩ rằng người khiếm thị cần 1 chiêc máy tính chuyên biệt. Thực tế thì tôi đang dùng 1 chiếc Dell Inspiron 15r SE được mua từ cửa hàng bán máy tính bình thường như bao cửa hàng khác. (Lúc tác giả viết là 2015 - ND). Tôi dùng Windows 8 và tôi cài thêm phần mềm đọc màn hình NVDA.
Phần mềm này đọc hết các từ trên màn hình theo 1 giọng đọc máy giống giọng của Siri Apple. Ứng dụng đọc màn hình có thể kết nối với thiết bị hiển thị chữ nổi (braille display), theo đó các nội dung được lựa chọn để đọc sẽ hiện thành chữ nổi trên thiết bị.

Đó là tất cả những gì một người khiếm thị cần để sử dụng được máy tính như 1 người bình thường. Tôi có thể làm được rất nhiều việc trên máy tính mà chính bạn cũng không nghĩ là khi nhắm mắt bạn có thể làm được, ví dụ như:

  • Lướt web trên Firefox
  • Viết báo cáo trên Microsoft word, căn chỉnh phần trình bày văn bản theo đúng yêu cầu khắt khe của giáo sư đại học
  • Viết blog chia sẻ như bài này
  • Thu âm, chỉnh sửa, hoàn chỉnh file audio (Tôi vốn thích hát và soạn nhạc)
  • Sử dụng các phần mềm chỉnh sửa âm thanh như Reaper, Goldwave, Audacity và Sonar
  • Lập trình web và các ứng dụng sử dụng công cụ Eclipse, Visual Studio, và NotePad++

Tôi liệt kê các công nghệ ở trên là để bạn hiểu rằng tôi cũng có thể sử dụng chúng như người bình thường không bị vấn đề về mắt vậy. Nếu bạn đang phát triển các ứng dụng lớn, với giao diện tuyệt vời và quy trình hoàn hảo, tôi rất mong bạn cân nhắc thêm tính thân thiện đối với những người khiếm thị. Ngày nay có rất nhiều bộ giao diện mẫu có sẵn để bạn tận dụng vừa tiện lợi vừa đáp ứng hỗ trợ cho người khiếm thị.
Tôi đang nói đến Android Activities, iOS NsViews và HTML5.

Tôi tham gia Free Code Camp vài tuần trước và tôi rất hâm mộ phương pháp của họ. Tôi đang theo học chương trình Khoa học máy tính được một vài năm rồi và bị thi trượt 1 học kỳ. Học kỳ đó có nhiều bài tập liên quan tới MEAN stack. Vì thế tôi cảm thấy rất may mắn vì đã tìm ra được cộng đồng Free Code Camp để học tập và trở thành 1 phần của nó. Tôi
tin tôi sẽ qua được học kỳ này.

:point_right:Tôi lập trình bằng cách nào?

Bạn hãy đọc dòng code sau đây:

If left paren x equals five right paren left brace print left paren
quote hello world exclaim quote right paren right brace.

(Giải thích cho bạn không biết code:

if (x==5){print("hello world!");}

nếu biến x = 5 thì in ra dòng chữ hello world! - ND)

Đây là nội dung mà máy đọc màn hình sẽ đọc cho tôi nghe 1 câu lệnh if trong ngôn ngữ lập trình Java. Bạn sẽ thấy nó khá dài dòng. Tôi đã định bỏ qua những đoạn đóng mở ngoặc vuông nhọn nhưng hoá ra tôi vẫn cần nghe những thông tin đó để kiểm tra lỗi (bug). Vì vậy tôi đã học cách kiên nhẫn nghe hết những câu dài dòng đó.
Có một số bạn khiếm thị khác giải quyết vấn đề này bằng cách thay thế các từ ngoặc trái, ngoặc phải bằng các từ tắt ngắn hơn để tiết kiệm vài mili giây. Và tốc độ đọc thì cực nhanh, chưa chắc bạn, một người bình thường có thể nghe ra.

Như vậy, cách tôi lập trình cũng không khác cách mà các lập trình viên khác làm là mấy. Tôi học cách gõ bàn phím nhanh bằng cách cảm nhận (touch type) (tiếng Việt gọi là gõ 10 ngón - ND), và tự mô hình hoá những dòng lệnh của mình để tôi có thể thực hiện được công việc của mình giống như bạn. Khác biệt duy nhất là tôi gần như không bao giờ
dùng chuột. Tôi chủ yếu dùng bàn phím để tương tác máy tính. Tuy nhiên có một số công cụ để lập trình như IntelliJ, PHPStorm, Webstorm, PyCharm, SourceTree thì chưa thân thiện với người khiếm thị. (Thông
tin này cần kiểm tra lại vào thời điểm hiện tại 2019 - ND
). Vì vậy tôi phải tiếp tục tìm kiếm các chương trình, công cụ thân thiện với người khiếm thị chứ không thoải mái lựa chọn như các bạn.

:point_right:Tôi mơ như thế nào?

Tôi cũng mơ giống như các bạn thôi. Những gì tôi tiếp xúc ban ngày cũng sẽ đi vào giấc mơ ban đêm của tôi. Điểm khác biệt là tôi không thực sự nhìn thấy gì cả. Thay vào đó, tôi nghe, ngửi, và cảm nhận mọi thứ, giống hệt như đời thực vậy. Lý do đơn giản thôi: giấc mơ dựa trên những hình ảnh được lưu trữ trong bộ nhớ của bạn. Vì tôi bị mù bẩm
sinh, tôi không có bất kỳ một hình ảnh được dự trữ nào cả. Phần hình ảnh trong giấc mơ của tôi hiện ra giống như trang 404 vậy - không tìm thấy ảnh.

:point_right:Cùng lập trình với tôi

Một bạn tình nguyện viên của Free Code Camp đã thuyết phục tôi chia sẻ bài này với cả thế giới. Nhờ nhận được sự chào đón nhiệt tình từ cộng đồng Free Code Camp mà tôi cũng thấy rất hạnh phúc khi được viết ra
những dòng này. Tôi thực sự hy vọng bạn sẽ học thêm được điều gì đó từ bài của tôi.
Tôi có thể tám về chủ đề này hàng giờ, và bài viết này đã nói nhiều hơn tôi dự định ban đầu rất nhiều. Nếu bạn có câu hỏi dành cho tôi,
bạn có thể tìm gặp tôi ở phòng chat của Free Code Camp. Tôi là Zersiax, hoặc bạn có thể tìm thấy tôi trên Twitter.

Cảm ơn đã đọc đến đây. Hẹn gặp bạn.

1 Like

Theo mình thấy, để giúp bạn vấn đề này thì cần phải có mạnh thường quân về mặt tài chính bên cạnh đó phải có người hỗ trợ về mặt kỹ thuật nữa. Nếu người có hảo tâm sẽ giúp bạn 100% thì không nói gì. Nhưng trong trường hợp người ta muốn giúp thì họ cũng phải tốn thời gian research kiến thức mới giúp bạn được. Do đó, mình nghĩ bạn nên lên facebook vào các group về công nghệ trình bày case của mình xúc tích ngắn gọn, thì chắc chắn sẽ có người giúp vì facebook có lượng tương tác cao nhất trong mạng xã hội. Mình cũng chỉ có thể góp ý vài lời vậy thôi, chứ mình cũng không đủ trình độ để giúp bạn rồi. Thân!

Hi @Nguyen_QuangNguyen

Về thỉnh cầu của cậu, thực ra, cậu hoàn toàn có thể sử dụng command line để dịch, chạy chương trình C. VS code chỉ là editor (giúp cậu edit code), việc dịch và chạy chương trình sẽ được thực hiện trên terminal. Đó thực ra là cách học C cổ điển nhất (tớ chưa bao giờ code C trên dev C++ hay bất cứ IDE nào).

Cậu gặp vấn đề gì khi sử dụng command line để dịch và chạy chương trình C không? Sẽ tốt hơn nếu cậu có thể trình bày cụ thể vấn đề của cậu với command line để dịch và chạy chương trình C.

3 Likes
  • Mình không dùng Visual code để lập trình C nên không rõ lắm, nhưng mình nghĩ có phím tắt để chạy chương trình và compile, ngoài ra bạn có cân nhắc Visual studio chưa, phần mềm đọc của bạn có đọc được lỗi khi compile hay chữ trên màn hình console khi chạy chương trình không?
  • Bạn chuyển từ làm web sang lập trình C hay đang nghiên cứu tất cả các nền tảng để tạo 1 dự án lớn hỗ trợ người khiếm thị học lập trình với tất cả các ngôn ngữ khác nhau vậy?
  • Nếu bạn đang làm việc với C thì bạn làm về mảng nào?
  • Ngoài việc chạy chương trình và compile bạn đã cân nhắc đến vấn đề debug, đọc/viết flow chart…?
  • Nếu bạn muốn chuyển đổi 1 cách tiện dụng nhất thì chỉ còn cách phát triển mới thôi, còn những công cụ hiện tại mình không nghĩ không thể hỗ trợ đủ được.
3 Likes

@Phuc_Nguyen4 Em cảm ơn anh!


Còn về câu hỏi của hai anh @library@Vu_Nguyen5, em xin trả lời như sau:

  • Thực ra, trước đây, như em đã nói ở trên, em có học ở Aptech và đã thất bại, vì phương pháp, mô hình đào tạo không phù hợp với người dùng trình đọc màn hình (Cụ thể là người khiếm thị). Tài liệu của họ là slide minh họa bằng hình ảnh và có chữ trong ảnh giống như họ scan từ tài liệu gốc ra vậy. Thế nên, mọi thứ khó accessible.
  • Bản thân em là một người chuyên nghiên cứu về assistive technology và cũng sử dụng nó để phục vụ cho cuộc sống hàng ngày, nên em hiểu rất rõ vấn đề đó.
    Ngoài ra, em có một group chat để thảo luận việc biên soạn sách lập trình c cho người khiếm thị, không đơn giản là mỗi c mà là các ngôn ngữ khác.
  • Thực ra, em và các bạn trong group bỏ tiền túi ra mua sách ngoài để chuyển thể nó thành bản mềm hoặc định dạng lại tài liệu dưới định dạng có thể tiếp cận được cho người khiếm thị, tức là mọi thứ phải đọc được bằng máy, hay nói đúng hơn là các phần mềm đọc màn hình có thể hiểu được nội dung của nó.
  • Khi em học ở Aptech, thầy ở trên lớp có cho cả lớp dùng dev c++ và ide đó accessibility của nó rất tệ. Trình đọc màn hình rất khó để tiếp cận được nội dung. Cách biên dịch thì nhấn f9 còn chạy thì nhấn f10, vừa biên dịch song chạy là nhấn f11. Tuy nhiên, do không tiếp cận tốt nên em đã chuyển sang vs code, vì nhiều người khiếm thị ở Trên thế giới đã sử dụng nó để code. Em cũng đã kiểm tra thì tính tiếp cận với screen reader, và thấy nó rất tốt. Chưa kể nếu cài thêm add-on cho nvda thì nó sẽ dễ dùng hơn nhiều.

Em hầu hết chuyển thể từ tài liệu của người sáng mắt ra, mọi thứ từ chuột thì em đều chuyển thành bàn phím và mọi thứ liên quan tới hình ảnh thì em có nhờ một bạn sáng mắt mô tả bằng lời, chú thích hình ảnh đó. Trong 4 thành viên thì có em là accessibility tester, anh Giang là lập trình viên khiếm thị đang làm việc cho Apple ở Singapore còn hai bạn còn lại là người sáng mắt và mặc dù, các bạn ấy rất nhiệt tình giúp đỡ nhưng chỉ tiếc là các bạn ấy là dân ngoại đạo. :unamused: Về phần anh Giang thì do anh ấy làm ở Apple nên cũng bận và anh ấy nói là lâu không code c nên quên mất rồi, vì anh ấy toàn làm java và Swift hay Objective - C nên anh ấy quên mất.

Trong vs code có tính năng support screen reader hay support accessibility nên nó có thể phân biệt khi người dùng sử dụng screen reader để tương tác với máy tính. Mỗi một hệ điều hành có một screen reader khác nhau nên em sẽ không nói tới ở đây. Em có search google nhưng không tìm thấy bất kì hướng dẫn nào liên quan tới cái em tìm và hầu hết là chạy c++ trên vs code và đối với người mới thì học c là hiếm. Các tài liệu nước ngoài cho thấy, số lượng người khiếm thị học python là nhiều hơn vì python là ngôn ngữ dễ học, dễ đọc, dễ nhớ cú pháp,… Ngoài ra, một điều quan trọng là bản thân nvda là một trình đọc màn hình mã nguồn mở được phát triển bằng python thế nên, nếu muốn hợp tác với NVAccess thì bạn đó phải biết python để phát triển add-on mở rộng tính năng cho NVDA. visual studio em cũng có dùng qua và nó tiếp cận với screen reader rất tuyệt nhưng máy em cấu hình yếu và bản thân em nhà ở vùng sâu, vùng xa nên điều kiện internet không thể tốt như thành phố được.

Do kiến thức lập trình của em hạn chế nên em cũng không thể giải thích việc làm thế nào để người khiếm thị có thể debug và thực ra, em cũng chỉ học mót nên kiến thức quá rỗng. Em biết autoIT, html, mỗi thứ em biết ở mức hạn chế và chưa thành thạo cho lắm vì như em đã nói ở trên là do phương pháp học không đúng cách nên không pháp huy được hết năng lực cũng như hạn chế tiếp cận tài liệu nên mọi thứ rất khó. Phải biên soạn lại tất cả ạ.

Thực ra, em muốn có một vài bộ tài liệu để giúp những bạn như em không phải chật vật khi học lập trình (tài liệu này chỉ ở mức cơ bản để các bạn ấy làm quen với lập trình thôi ạ, khi làm được sản phẩm và có kỹ năng cơ bản thì sẽ học bằng tài liệu nước ngoài vì những tài liệu đó sẽ accessible hơn tài liệu tiếng Việt rất nhiều), Thứ nhất, bản thân em vẫn tiếp tục với chuyên môn của mình là một accessibility tester còn về việc học lập trình thì em sẽ học web hơn vì dù sao những website bây giờ cũng chưa đáp ứng WCAG và bản thân tester vẫn phải biết code để đọc và gợi ý những yêu cầu để giúp cho các lập trình viên và các dev có thể sửa dễ dàng hơn. Sử dụng các tools hay các công nghệ trợ giúp là chưa đủ. Em cũng không có ý định học c vì em muốn xác định hướng đi cho mình và sở trường của bản thân hơn là phải học từ a tới z. Trong khi đó, kiến thức chuyên môn của mình là accessibility. Về việc đọc hay viết thì do kỹ năng máy tính của các bạn ấy vững và debug thì các bạn ấy phải tự học vì khi nó đọc bug ở đâu thì sửa dòng đó. Đôi khi phải nghe lại code từ đầu.

Nếu nói là phát triển mới thì rất khó vì trên thế giới người khiếm thị đã tiếp cận với lập trình từ rất lâu. Còn ở Việt Nam thì số lượng là khiêm tốn và khái niệm này đối với phần đông người khiếm thị là rất mới mẻ, mơ hồ. Theo khảo sát của stack overflow thì cứ 100 người thì 1 người khiếm thị là lập trình viên chiếm 1.1%. Tổng số lập trình viên. Trong đó, người khiếm thị là người học lập trình nhiều nhất so với các dạng khuyết tật khác. Mặc dù, số liệu như vậy nhưng thực tế các quốc gia như Việt Nam thì chưa có giải pháp. Em làm dự án này là giúp đỡ cộng đồng và giúp đỡ bản thân em, bù đáp những thiếu sót mà những tài liệu khác không thể đáp ứng. Bọn em đã làm gần song bộ tài liệu vì hầu hết là chuyển thể tài liệu của người sáng sang là rất nhanh nhưng việc cài đặt môi trường hay chạy chương trình cũng như biên dịch thì trong tài liệu không ghi. Thế nên, em đang gặp khó ở bước này.

Em nghĩ là chia sẻ của em quá dài nên nếu gõ phím với tốc độ nhanh nhất cũng không thể giải quyết. Nói về chủ đề này rất dài và nếu gõ với 10 ngón cũng không thể nói hết. Bọn em xác định nó là dự án dài hơi nên sẽ cần phải bỏ nhiều thời gian, tiền bạc, công sức để biên soạn nhằm giúp người khiếm thị ở Việt Nam có cơ hội tiếp cận với lập trình. Đồng thời, họ sẽ có việc làm tốt và sẽ sống đúng với đam mê của mình. Em biết có nhiều trung tâm đào tạo lập trình cho người khuyết tật nhưng hầu hết là các bạn khuyết tật vận động còn các dạng tật khác thì không có được đào tạo. Về lý do em chọn c là ngôn ngữ bắt đầu là vì hiện nay các trung tâm và trường đại học đều dạy c. Em nghĩ, mọi thứ em chia sẻ quá chi tiết nên có lẽ sẽ giải đáp thắc mắc của các anh em trong forum này rồi. Em hi vọng, sẽ có người hiểu được lý do em đưa ra chủ đề này.

1 Like

Tớ nghĩ cậu nên trả lời tập trung vào câu hỏi trước @Nguyen_QuangNguyen.

Tớ chỉ hỏi:

Cậu gặp vấn đề gì khi sử dụng command line để dịch và chạy chương trình C không? Sẽ tốt hơn nếu cậu có thể trình bày cụ thể vấn đề của cậu với command line để dịch và chạy chương trình C.

Nếu cậu không hiểu câu hỏi, cậu có thể hỏi lại, tớ sẽ giải thích thêm.

2 Likes

Khó khăn dơn giản của em là không thể tìm thấy cách chạy và biên dịch chương trình bằng comment line hay hotKey. Nếu có thì mọi thứ đều dùng chuột và bản thân em không thể dùng được chuột vì em không nhìn thấy đơn giản là vậy.

Nói gọn hơn là em không thể giải quyết vấn đề bằng hotKey và comment line vì không có phương pháp.

Cái khó ở đây là không tìm được cú pháp hay lệnh để biên dịch và chạy nó vì như em đã nói là trên google chỉ có cú pháp biên dịch và chạy c++ chứ không chạy được c. Ngoài ra, các thao tác hướng chuột nhiều hơn là phím.

Bản thân em không làm việc với c mà chỉ giúp cho những bạn khiếm thị mới học lập trình có thêm kiến thức nền tảng và giúp các bạn ấy đỡ chật vật hơn trong quá trình học thôi vì tài liệu quá hiếm ạ.

Về môi trường em đã cài hết rồi còn cái chạy thì không biết cách để chạy vì các tài liệu trên google thì hầu hết là dùng chuột. Họ minh họa bằng ảnh nên screen reader của em không thể đọc. Anh chỉ cần giúp em cách giải quyết còn việc còn lại em sẽ cùng mấy bạn sử lý dần.

Tiếc là em không thể chia sẻ file lên vì nó chỉ cho đính kèm file ảnh thôi nên mọi người không thể xem bài được.

nếu anh có thể giúp thì có thể cho em địa chỉ email để em gửi bài để anh tham khảo chứ gửi qua đây không nổi vì em chưa đăng lên web ý ạ.

  • Thứ 1, cách diễn đạt vấn đề đến với người khác, bạn phải cắt gọt câu từ sao cho ngắn gọn và phù hợp, tránh dài dòng và lê thê quá mức vì như vậy người đọc thấy dài quá, họ sẽ lướt qua và bạn sẽ mất cơ hội tìm người có thể giúp đỡ bạn.

  • Thứ 2, mình có đọc lại các đoạn comment dài dòng của bạn, bạn có đề cập đến các vấn đề vấn đề khi chạy comment line thì cứ chụp hình đăng lên forum để mọi người cùng giải quyết, khi lỗi gì nó cũng hiển thị thông báo lỗi. Thông thường các vấn đề phương pháp chạy một chức năng nào đó trên VS Code thì trang chủ của nó có kèm user guide hướng dẫn chức năng phù hợp. Mấy chương trình C nhỏ nhỏ, code không nhiều, không quá khó để chụp màn hình.

  • Thứ 3, bản chất ngôn ngữ nào cũng vậy y như nhau, khi bạn hiểu được 1 ngôn ngữ thì sẽ dễ dàng tiếp cận các ngôn ngữ, vì nền tảng chỉ có nhiêu đó, khi xây dựng chương trình vì mấu chốt để làm phát triển nó là giải pháp để giải quyết vấn đề. Ví dụ: bạn xây dựng tài liệu hướng dẫn code C cho người khiếm thị, nếu bản thân đã học qua C++, python, html,… thì nền tảng đã có, bạn chỉ cần theo guide hướng dẫn, giúp bản thân hiểu được ngôn ngữ C và xây dựng tài liệu thôi. Mình đã có một thời gian học ở chương trình Aptech, thấy cuốn lập trình C ở aptech công phu và dễ hiểu vì nó là môn học đầu tiên ngay học học kỳ 1 và được việt hóa luôn. Thật sự, mình thấy nếu học qua hết 4 kỳ của Aptech thì chắc chắn nền tảng code cũng ít nhất đạt đủ trình fresher nếu chịu học đàng hoàng. Bạn theo học được chắc chắn bạn có thể học các môn tiếp theo để giúp bản thân theo đuổi những gì bạn đã mong muốn phía trên. Tại sao học aptech thất bại nhỉ, không thành công cũng thành nhân.

  • Chốt lại vấn đề: chụp màn hình chỗ nào bị lỗi upload lên đây, ít hay nhiều cũng được để mọi người giúp đỡ.

1 Like

@Phuc_Nguyen4: Bạn Quang là người khiếm thị. Bạn ấy không học được ở Aptech vì chương trình của họ dùng nhiều Picture thay vì Text. Do đó bạn ấy không tiếp cận được với tài liệu giảng dạy, vì bạn Quang dùng chương trình chuyển đổi Text sang Audio để học.

5 Likes

Tớ hiểu rồi.

Thực ra, tớ nghĩ cậu có nhiều lựa chọn cho việc lập trình C sử dụng nhiều bàn phím (như command line và chuột) lắm.
Tớ recommend cậu một vài cách nhé!

Cách 1: Cài đặt visual studio (không phải visual studio code đâu)

Cậu có thể cài đặt visual studio để sử dụng C hoặc C++.
Điểm mạnh của cách này là, vì Visual studio là IDE (không như Visual studio code, nó chỉ là editor), nó đã bao gồm tất cả những thứ cậu cần cho việc code C, như:

  • Editor (trình soạn thảo)
  • Compiler (trình biên dịch)
  • Debugger (trình gỡ lỗi)
  • Console

Cậu hoàn toàn có thể học phím tắt của Visual studio để viết code, dịch code, chạy code, xem thông báo kết quả trên console.
Điểm yếu của nó là cậu phải bỏ rất nhiều công sức luyện tập để thành thạo tất cả phím tắt (hotkey). Nó không dễ, cũng không nhanh được. Nếu không, cậu buộc phải sử dụng chuột.

Cách 2: Sử dụng editor + terminal (với compiler)

Đây là cách cổ điển để lập trình C mà tớ đã đề cập ở trên.
Thường những ai học lập trình trên linux sẽ sử dụng combo này. Cậu có thể làm điều tương tự với windows, với các lựa chọn như:

  • Editor: bất cứ editor nào cậu thích, và có tính accessibility cao. Tớ không rõ editor nào có tính accessibility cao, nên tớ không có recommend gì cho cậu.
  • Terminal: cậu có thể sử dụng git bash, cygwin, minGW, hay thậm chí cả powershell/command prompt.
    Cậu có thể thử cân nhắc git bash, tớ nghĩ nó dễ cài (cho người mới) và có rất nhiều tính năng rồi.
  • Compiler: cậu có thể lựa chọn bất cứ C compiler nào.
    Tớ recommend cậu sử dụng gcc, như vậy cậu sẽ dễ dàng chuyển sang sử dụng linux trong tương lai. Cách dễ nhất để có gcc là cậu cài Strawberry Perl, nó đã bao gồm gcc và các tool GNU khác cho cậu, mà không cần thêm cài đặt gì khác.

Cá nhân tớ không lập trình C trên windows bao giờ, nên hi vọng có ai đó chỉ cho cậu package khác dễ dàng hơn.
Với cách này, ưu điểm rõ ràng là cậu có thể sử dụng command line + linh hoạt trong việc chọn các tool phù hợp nhất với cậu. Cậu sẽ làm việc chủ yếu trên terminal (cho việc dịch và chạy chương trình), và editor cho việc viết code (cậu thậm chí có thể sử dụng vim editor, như vậy cậu sẽ làm việc 100% trên terminal). Cậu cũng sẽ dễ dàng hiểu rõ một chương trình được viết, dịch và chạy ra sao (nhiều người sử dụng IDE không có thú vui đó :smile:)

Điểm trừ của nó là việc cài đặt sẽ phức tạp hơn, nếu cậu chọn sai package để cài. Nó không hề dễ dàng, nhất là với newbie.

Về command để dịch và chạy, tớ có thể hướng dẫn cậu, nhưng chỉ khi cậu đã có lựa chọn compiler của cậu (mỗi compiler có thể có lệnh dịch khác nhau).


Cậu thấy sao? Lựa chọn nào cậu muốn theo nào? :smile:

4 Likes

Theo em thì để lựa chọn cho vừa phù hợp với người mới và vừa accessible thì em chọn notepad++ hoặc vs code nhưng em vẫn dùng vs code hơn vì nó có support screen reader được kích hoạt chỉ cần cấu hình profile trong nvda và vs code để cho nó chạy tương thích với nhau là ok. Còn trình biên dịch thì em dùng extension c/c++ cho vs code và minGW vì nó có nhiều tutorial nói tới cái này. mặc dù, nó không accessibility tốt cho lắm nhưng vẫn có thể làm. Tuy đối với người mới là hơi khó trong việc thiết lập biến môi trường là khó với người mới nhưng đối với bản thân em thì không hề khó, lại còn nhanh nữa.

Em sẽ đưa nội dung bài nên forum để anh em tham khảo ạ:

Bài 2. Cài đặt môi trường và viết chương trình đầu tiên

I: mục tiêu bài học:

II: Nội dung:

1. Cài đặt môi trường:

1.1 Giới thiệu vs code

1.2 Cài đặt vs code:

Đầu tiên bạn tải về vs code tại: https://code.visualstudio.com/download
Sau đó, bạn vào mục download tìm tới file vs code.exe rồi nhấn enter để chạy nó hoặc bạn có thể chạy nó dưới quyền admin bằng cách nhấn phím Application để mở menu rồi nhấn mũi tên xuống để chọn run administrator. Lúc này, màn hình cài đặt của vs code hiện ra, bạn nhấn phím tab và nhấn mũi tên lên tìm tới mục I accept the agreement để chấp nhận điều khoản của tác giả hoặc bạn có thể nhấn alt+a để chọn mục này. Tiếp đến, bạn nhấn tab tới nút next để chuyển sang bước tiếp theo hoặc bạn có thể nhấn alt+n để kích hoạt nó. Ở bước chọn nơi lưu chữ thì bạn để mặc định rồi nhấn tab tìm tới nút next rồi nhấn enter hoặc nhanh hơn thì nhấn alt+n.Ở các bước kế tiếp thì bạn cứ nhấn next thôi.
Ở bước tiếp theo bạn đánh dấu cho mình hai tùy chọn là Add “Open with Code” action to Windows Explorer file context menu và Add “Open with Code” action to Windows Explorer directory context menu. Khi đánh dấu song hai tùy chọn này thì bạn nhấn tab tới nút next rồi nhấn enter. Tiếp theo, bạn nhấn tab tới nút install rồi nhấn enter và ngồi chờ quá trình cài đặt đang thực hiện. Sau khi quá trình cài đặt vs code hoàn tất bạn nhấn tab tới nút finish rồi nhấn enter hoặc bạn có thể nhấn alt+f để kích hoạt nút này. Lưu ý: nếu bạn muốn chạy vs code luôn thì bạn có thể chọn Launch Visual Studio Code (Mặc định tùy chọn này được chọn, nếu bạn không thích thì có thể bỏ chọn). Vậy là quá trình cài đặt vs code hoàn tất rồi.

1.3 Cấu hình vs code để tương thích với trình đọc màn hình:

Mặc định, vs code chưa thực sự tối ưu với trình đọc màn hình vì vậy, chúng ta cần phải thực hiện một vài bước nữa để thiết lập vs code sao cho thuận tiện với người dùng khiếm thị nhất có thể. Để thiết lập vs code thì bạn làm như sau:

Đầu tiên bạn mở vs code lên, sau đó nhấn alt+f để mở file menu. tiếp đến bạn nhấn p để tìm tới preferences, tiếp đến bạn nhấn enter để mở mục setting. Sau đó, bạn nhấn e để tìm tới ô nhập search setting (mặc định nó đã ở ô search setting). Tiếp đến, bạn nhập từ khóa screen. Sau khi nhập song, bạn nhấn tab khi bạn nghe thấy mục Settings tree view rồi nhấn mũi tên xuống đến khi bạn nghe thấy mục Editor Accessibility support rồi nhấn tab để nó hiện ra combo box. Lúc này, bạn nhấn alt+mũi tên lên để mở rộng nó rồi chọn on là song. Khi bạn kích hoạt nó thành công thì bạn nhấn ctrl+f4 để thoát khỏi hộp thoại cài đặt của vs code. Theo mình, để thuận tiện cho việc này thì bạn nên sử dụng tổ hợp phím ctrl+w để đóng nó.

Để nhận sự trợ giúp về accessibility bạn có thể sử dụng tổ hợp phím alt+f1.

Thế là chúng ta đã cấu hình song vs code rồi.

1.4 Cài đặt extension c/c++ cho vs code:

Để cài đặt extension c/c++ cho vs code, bạn cần làm những bước như sau:

Đầu tiên, bạn khởi động vs code lên, ở màn hình Get Started bạn nhấn tổ hợp phím ctrl+shift+x để truy cập vào cửa hàng extension. mặc định, nó đang ở ô nhập search extension, bạn vui lòng tìm kiếm với từ khóa c. Sau khi thực hiện tìm kiếm, bạn nhấn tab và nó sẽ hiện ra danh sách các extension mà bạn muốn cài. Bạn chọn extension c/C++ của Microsoft để cài đặt (extension này nó ngay kết quả đầu tiên luôn). Sau khi bạn chọn đúng extension mà bạn muốn cài thì bạn nhấn phím tab đến nút install extension rồi nhấn phím enter để bắt đầu cài đặt. Việc cài đặt nó nhanh hay chậm là tùy thuộc vào chất lượng mạng internet của bạn nhé, thường thì việc cài đặt một extension là rất nhanh. Sau khi cài đặt extension thành công, bạn cần khởi động lại vs code để extension đó có thể hoạt động nhé. Như vậy, việc cài đặt extension đến đây là hoàn tất rồi. Tuy nhiên, để chúng ta có thể lập trình c được cần phải cài đặt trình biên dịch cho nó.

1.5 Cài đặt trình biên dịch c

Đầu tiên, để có trình biên dịch c, bạn cần cài đặt minGW bạn vui lòng tải MinGw tại link: https://sourceforge.net/projects/mingw/ Sau khi tải về, bạn tìm tới thu mục download rồi tìm tới file mingw-get-setup.exe rồi nhấn enter để chạy nó hoặc bạn có thể chạy nó dưới quyền admin bằng cách nhấn phím Application. Sau đó, nhấn mũi tên xuống để chọn run administrator rồi nhấn enter để kích hoạt nó. Lúc này, màn hình cài đặt MinGw hiện ra, bạn nhấn tab đến nút install rồi nhấn enter để kích hoạt. Ở bước này, nó yêu cầu bạn chọn đường dẫn lưu chữ, theo mình để cho dễ nhớ thì bạn nên để mặc định để bước tiếp theo sẽ cần tới nó. Tiếp theo, bạn tab tới nút Continue rồi nhấn enter. Lúc này, bạn chỉ việc ngồi chờ nó tải giữ liệu thôi, sau khi nó tải song thì bạn nhấn tab tới Continue và chọn nó. Khi bạn nhấn enter vào Continue, nó sẽ hiện ra cửa sổ MinGW Installation Manager. Ở bước này, bạn cần lưu ý cho mình hai dòng mingw32-base và mingw32-gcc-g++ vì đây là hai gói quan trọng để có thể biên dịch được ngôn ngữ c. Để làm được điều này, bạn nhấn tổ hợp phím shift+NVDA+mũi tên phải tìm tới list. Sau đó, bạn nhấn shift+NVda+mũi tên xuống để mở danh sách ra, để di chuyển giữa các gói bạn nhấn shift+NVDa+Mũi tên trái hoặc phải, để kích hoạt nó bạn nhấn nvda+enter. Khi chọn vào từng dòng thì nó sẽ hiện ra Package subMenu. Lúc này, bạn chọn Mark for Installation. Khi bạn chọn song hai dòng trên, bạn nhấn alt+i để mở Installation subMenu rồi nhấn mũi tên lên chọn Changes. Lúc này, bạn nhấn tab tới nút ok rồi nhấn enter và ngồi chờ quá trình cài đặt. Sau khi quá trình cài đặt hoàn tất, bạn nhấn tab đến nút Close rồi nhấn phím enter để kích hoạt. Lúc này, nó sẽ quay trở lại cửa sổ MinGW Installation Manager các bạn nhấn tổ hợp phím alt+f4 để thoát ra khỏi MinGW Installation Manager. bây giờ, quá trình cài đặt MinGW thành công nhưng để có thể biên dịch được c thì chúng ta cần làm thêm một bước quan trọng nữa đó là thiết lập biến môi trường cho MinGW. Để thiết lập biến môi trường cho MinGW, bạn cần làm như sau:

Ở màn hình desktop, bạn tìm tới This PC rồi nhấn phím applications để mở Context menu, nhấn mũi tên lên chọn Properties rồi nhấn enter. Cửa sổ Windows Settings hiện ra, bạn nhấn tab tới mục Advanced system settings. Tiếp đến, trong Advanced system settings bạn nhấn tab tới nút Environment Variables rồi nhấn enter để kích hoạt. Lúc này, hộp thoại Environment Variables hiện ra, bạn nhấn phím tab tới mục System variables. Trong mục này, bạn chỉ cần nhấn mũi tên xuống tới dòng Path rồi tab tới nút edit rồi nhấn enter để kích hoạt. Khi đó, hộp thoại Edit environment variable xuất hiện, bạn tab tới nút new rồi enter. Lúc này, nó sẽ hiện ra một ô nhập yêu cầu chúng ta nhập biến môi trường cho nó. Bây giờ, bạn chỉ cần Tìm đường dẫn chứa thu mục bin của compile copy, paste vào rồi nhấn tab đến nút OK rồi enter để kích hoạt.

Đường dẫn mặc định là: C:\MinGW\bin

Khi thiết lập song, bạn cứ chọn tới nút ok để đóng lại.

Sau khi thiết lập biến môi trường thành công, Để kiểm tra đã cài Path thành công hay chưa bạn mở Command Prompt (cmd) và gõ:
g++ --version nếu bạn nghe thấy thông tin phiên bản của g++ và các thông tin khác thì tức là bạn đã thành công thiết lập môi trường còn không thì bạn nên xem lại nhé.

2 Viết chương trình đầu tiên:

2.1. Viết chương trình Hello World:

Đầu tiên, ở màn hình desktop bạn mở vs code ra, nhấn ctrl+n để tạo một file mới, sau đó gõ đoạn code sau:

#include 					<stio.h>	
int main()
{
   /* Day la chuong trinh C dau tien */
 printf("Hello World");
return 0;
}

Sau khi gõ song đoạn code, bạn nhấn ctrl+s để lưu lại với tên file là hello world.c trong thu mục nào cũng được, miễn là bạn dễ nhớ. Ở đây, mình sẽ lưu vào ổ C.

2.2. Biên dịch và chạy chương trình:

3 Likes

Ở đây, em quy đổi mọi thứ thành HotKey và comment line hết cho phù hợp với người khiếm thị, còn ảnh thì các bạn sáng mắt sẽ làm thành chú thích text. Tài liệu này thực ra là tài liệu của Aptech vì em có xin thầy tài liệu để nghiên cứu nhưng vì nó không ở định dạng mà em có thể tiếp cận nên để biên soạn lại tài liệu để chuyển thành định dạng dễ tiếp cận sẽ mất rất nhiều thời gian, công sức. Chưa kể, khi chuyển song bộ tài liệu này thì các bạn sáng mắt đã học hết một kì rồi. Thế nên, để mọi thứ tốt hơn thì sẽ gây cản trở tới bọn em, đặc biệt hơn là phương pháp, mô hình đào tạo, lộ trình cũng như môi trường ở đó không phù hợp với mọi dạng tật khác nhau.

1 Like

Đây là bài blog gốc vì như em đã nói, bản dịch có nhiều thiếu sót nên em sẽ chia sẻ bản gốc, vì em biết dân code đạo sẽ đọc được tiếng Anh, em cũng biết điều đó:

I’m a coder. I’m also blind. Blind as a bat, you might say. And I was born this way.
When I mention this to my fellow human beings — the ones who’ve never suffered any form of visual impairment — they usually ask one of following questions:

  • Then, how can you even read what I’m typing?
  • Wow. How are you even able to code?
  • Or, the crowd favorite — Do you dream?

I get these questions again and again. So let me answer these three questions in this blog post. I’ll try and sketch out an image for those of you who are curious about accessibility, and how blind people use computers to code, and to do the work of the 21st century.

How do you even know what I’m typing?

I like this question, because it allows me to immediately explain how blind people actually use computers.

A lot of people are under the impression that blind people require specially adapted computers in order to get anything done. Even some of my fellow Visually Impaired Persons (VIPs) tend to think this.

Well let me debunk this myth right here and now. I am currently typing this on a normal Dell Inspiron 15r SE notebook, which can be bought in any laptop store that sells (somewhat less recent) laptops. The machine runs windows 8 (not my personal choice, but UEFI is too much of a pain to downgrade). All I did to adapt it was install an open-source screen reader called NVDA.

A screen reader basically, at its most basic level — wait for it — reads the screen. It tells you the textual content of the screen with a synthesized text-to-speech Siri-like voice. Screen readers also allow for the use of a braille display, a device that consists of a line of refreshable braille cells that can form letters according to what content is highlighted on the screen.
This is really all the adaptation a blind computer user needs. Using this program, I can do many things you probably wouldn’t imagine being able to do with your eyes closed, such as:

  • Browsing the web using Firefox
  • Writing up reports in Microsoft Word, then marking them up to conform to college professors’ stringent layout demands.
  • Writing up snazzy blog posts like this one
  • Recording, editing, mixing and publishing audio (My hobbies include singing and making music)
  • Using audio production apps like Reaper, Goldwave, Audacity and Sonar
  • Coding websites and applications using Eclipse, (the ironically named) Visual Studio, and good old NotePad++

The reason I’m naming all these mainstream technologies is to show you that I can use them just like people who aren’t ocularly challenged.

If you’re writing the next big application, with a stunning UI and a great workflow, I humbly ask you to consider accessibility as part of the equation. In this day and age, there’s really no reason not to use the UI toolkits available. It’s a lot easier than you may think. Yes, these include the Android Activities, iOS NsViews and HTML5 widgets you may be thinking of.

I joined Free Code Camp a few weeks back and really loved the concept. I’ve been pursuing a degree in Computer Science for the last few years, and had failed a semester that involved a lot of work with the MEAN stack. So I was really happy to find such an amazing community to be a part of and learn with. I’m sure I’ll pass my semester with flying colors this time.

I sadly ran into accessibility issues when working through the by now famous Dash tutorials by General Assembly. The tutorials are undoubtedly good, but were completely unreadable for me because they chose to embed all their text in image slides that lack any textual description or content for screen readers to work with. Recall that screen readers read out textual content of the screen. They aren’t smart enough to interpret graphics.

Fortunately, some fellow campers at the Free Code Camp were sympathetic towards my plight and volunteered to transcribe all these slides for me. This offer left me ‘flabbergasted’, as our dear western neighbors across the sea would say. I’m very grateful for the work these people have done to further my studying. You guys know who you are. Thanks a lot!

But …how do you code?

If left paren x equals five right paren left brace print left paren quote hello world exclaim quote right paren right brace.

This is how a typical if-block in a Java-ish programming language would be read to me. You can see that it’s rather verbose. I tend to turn off the notifications for parenthesis and brackets until I find I need to match brackets while debugging, so that I don’t go crazy from the rather wordy descriptions of these signs. Others have solved this problem by substituting the default ‘left brace’ for something like ‘lace’ or ‘begin’, just to save a few milliseconds. The rate of speech is extremely fast for people who aren’t used to it.
For those of you who can’t follow this, it’s my computer reading out the first bit of this very blog post that I’m writing in NotePad++.

So, how I code doesn’t actually differ all that much from how others code. I’ve learned how to touch type, and mentally conceptualize my code so that I can work with it just like you guys do. The only difference is that I barely ever use a mouse for anything. I tend to stick with hotkeys and the command line instead.

Sadly though, in this field, all is not well. Premier tools that coders use every day, like the IntelliJ editor, as well as all its offshoots (PHPStorm, WebStorm, PyCharm), are completely inaccessible, due simply to the fact that the developers of these programs have not adhered to the accessibility guidelines. They’ve failed to give screen readers textual labels or accessibility descriptions to work with. The same goes for applications like SourceTree, which is slowly getting better, but is still a pain to use.

I therefore have to keep looking for tutorials, programs and tools that are accessible, and cannot simply pick up any off-the-shelf IDE.

How do you dream?

I promised to answer all three questions, so I’ll keep that promise. Don’t expect anything too resounding, though.

I dream just like you guys do. My mind translates experiences and impulses I’ve received during the day into dreams I have at night. The difference being that I don’t actually see anything.

Instead, I hear, smell and feel everything, just like in real life. The reason for this is simple: dreams based on visual imagery pull from your already stored visual knowledge to construct that visual imagery. Since I’ve been blind since birth, I have no visual frame of reference. The visual portion of my dreams run into a big fat 404 error: image not found.

Code with me

A Free Code Camp volunteer asked me to write this blog post to share my way of doing things with the world. After the welcome I’ve received from this community, I was all too happy to write this. I really hope you guys have learned something from it.

I could talk about this for hours, and this article has already grown far longer than I initially planned. If you have questions, come find me in the Free Code Camp chatrooms. I am Zersiax there, and I can be found by that name on Twitter as well.
Thanks for reading this. I’ll see you later! (Sorry. I really couldn’t resist that one) :slight_smile:


I thought this would be fitting to repost — as my first-ever Medium post — the article that threw my life for a loop one year ago, back in January 2015.

Công nhận bạn có tâm huyết về vấn đề này, nhưng để có thể xúc tích và dễ hiểu hơn, cách hướng dẫn phía trên bạn có thể quy đổi thành bước 1, bước 2,… để người những bạn khiếm thị có thể biết được các bước mình cần làm và có thể giải thích sau, để nó có thể tường minh. Hạn chế dùng văn nói trong việc viết tài liệu. Nếu bạn thật sự có tâm huyết này, bạn nên chia sẽ những cái này lên những trang cộng đồng cỡ github để mọi người có thể tham gia vào chỉnh sửa giúp cho bạn cho thêm tường minh. Đương nhiên, khi bạn làm vậy thì nên thông báo lên đây để mọi người join vào sửa giúp bạn sẽ cực kỳ nhanh mà dự án của bạn sẽ nhanh chóng thành công. Đôi lời góp ý tiếp theo của mình.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?