Kỹ năng viết tiếng Anh học thuật (Writing Academic English) (tiếp)
Bài viết này là một phần trong chuỗi các bài viết về kỹ năng viết tiếng Anh học thuật (Writing Academic English). Hy vọng nó có thể giúp các bạn đang học tiếng Anh có thể cũng cố được kỹ năng viết tiếng Anh của mình.
Tài liệu tham khảo:
Alice Oshima, Ann Hogue, “Writing Academic English” 3rd edition.
———————————————————————————-
(tiếp theo)
Giai đoạn lập dàn ý:
Trong giai đoạn này, bạn sắp xếp các ý tưởng được sinh ra trong giai đoạn trước thành các dàn ý.
Bước đầu tiên, bạn chia các ý tưởng theo các chủ đề con và gạch bỏ những ý tưởng mà không thuộc một chủ đề con nào hoặc sẽ không sử dụng đến. Tiếp tục việc chia các ý tưởng trong các chủ đề con theo các chủ đề hẹp hơn.
Cuối cùng, bạn sẽ viết các câu văn theo chủ đề. Một dàn ý có các ý chính và ý hỗ trợ theo thứ tự mà bạn dự định viết về chúng.
Giai đoạn viết và sửa bản nháp:
Ở giai đoạn này, bạn sẽ viết và sửa bản nháp một vài lần cho đến khi có được bản hoàn chỉnh.
Bước đầu tiên bạn viết một bản nháp thô từ các dàn ý. Hãy viết ra ý tưởng chính của chủ đề và gạch chân nó. Viết tiếp các câu khác trong dàn ý một cách đều đặn để thành đoạn văn. Hãy mạnh dạn thêm vào những ý tưởng khác liên quan đến chủ đề đang viết cho dù chúng không có trong dàn ý. Đừng lo lắng về ngữ pháp, ngắt câu hoặc chính tả. Bản nháp đầu tiên này không cần phải hoàn hảo. Mục đích của nó là để bạn viết ra càng nhiều thông tin càng tốt theo chủ điểm cụ thể đã nêu ra trong dàn ý.
Bước tiếp theo là sửa và sắp xếp lại nội dung. Bạn sẽ sửa lại những gì đã viết cho tốt hơn. Đọc kỹ nội dung và thứ tự đã viết để kiểm tra sự thống nhất, sự kết dính và cả tính logic. Trong lần sửa thứ nhất, bạn không cần phải sửa ngữ pháp, cấu trúc câu, chính tả hay sự ngắt câu. Bạn chỉ cần quan tâm chủ yếu đến nội dung và thứ tự tổ chức câu văn trong đó.
Thực hiện các công việc sau:
Đọc toàn bộ đoạn văn một cách cẩn thận để có cái nhìn tổng quan.
- Kiểm tra xem đã diễn đạt được ý chính chưa.
- Kiểm tra tính logic và kết dính toàn bộ.
- Kiểm tra để chắc chắn rằng đoạn văn của bạn có câu diễn đạt ý chính.
- Kiểm tra tính thống nhất và có thể bỏ những câu không có chức năng hỗ trợ cho ý nghĩa của đoạn đấy.
- Kiểm tra xem mỗi đoạn đã có đủ các ý hỗ trợ giải thích cho chủ đề chính của đoạn hay chưa. Nếu chưa thì viết lưu ý vào là cần thêm chi tiết hoặc cần ví dụ minh họa.
- Kiểm tra các từ hoặc câu chuyển tiếp.
- Cuối cùng, xem thử đoạn văn của bạn có cần câu kết luận hay không.
Bây giờ là lúc bạn viết lại đoạn văn với những thông tin cần sửa để có bản nháp lần hai. Ở lần sửa này, bạn kiểm tra ngữ pháp, chính tả, dấu ngắt câu và cấu trúc câu.
- Kiểm tra tính đúng đắn và đầy đủ của mỗi câu.
- Kiểm tra cách dùng danh từ, động từ, thì của động từ trong mỗi câu.
- Kiểm tra sự ngắt câu, chính tả, viết hoa, lỗi soạn thảo.
- Sử dụng từ vựng thích hợp.
Giai đoạn viết hoàn chỉnh:
Cuối cùng, bạn sẽ viết bản hoàn chỉnh. Nó nên được viết một cách rõ ràng dễ hiểu. Hãy chắc chắn là bạn đã sửa các lỗi đã lưu ý ở trên. Sau đó bạn đọc lại và đừng ngạc nhiên nếu bạn vẫn tiếp tục sửa một vài chỗ nữa. Hãy nhớ rằng viết là một quá trình tiếp tục cho đến khi nào bạn cảm thấy hài lòng với bản hoàn chỉnh cuối cùng.
Kỹ năng viết tiếng Anh học thuật (Writing Academic English)
Bài viết này là một phần trong chuỗi các bài viết về kỹ năng viết tiếng Anh học thuật (Writing Academic English). Hy vọng nó có thể giúp các bạn đang học tiếng Anh có thể cũng cố được kỹ năng viết tiếng Anh của mình.
Tài liệu tham khảo:
Alice Oshima, Ann Hogue, “Writing Academic English” 3rd edition.
———————————————————————————-
Phần I: Quá trình viết học thuật
Giới thiệu
Viết học thuật là một hình thức viết thường được sử dụng trong các trường đại học. Phương pháp này khác với các phương pháp khác như: viết riêng tư, viết văn học, viết báo chí, viết thương mại. Khi viết, bạn cần chú ý đến đối tượng độc giả, những người sẽ đọc những gì bạn viết. Đối với viết học thuật, độc giả chính thường là các giáo viên hoặc giáo sư hướng dẫn của bạn.
Ngoài ra, bạn cũng nên chú ý đến giọng văn, kiểu cách mà bạn diễn giải nội dung viết. Giọng văn phụ thuộc vào cách chọn từ ngữ, cấu trúc ngữ pháp và thậm chí là độ dài câu văn mà bạn viết.
Quá trình viết học thuật gồm 4 giai đoạn chính:
- Chuẩn bị
- Lập dàn ý
- Viết và sửa bản nháp
- Viết hoàn chỉnh
Giai đoạn chuẩn bị:
Bước 1: Chọn và làm hẹp chủ đề
Giả sử bạn muốn viết về chủ đề môi trường. Đó là một chủ đề rộng mà bạn khó có thể diễn giải trong một đoạn văn. Bạn có thể là hẹp chủ để bằng cách viết về vấn đề ô nhiễm môi trường nếu bạn muốn. Tuy nhiên, chủ đề như thế vẫn còn quá rộng đối với một đoạn văn. Bạn có thể làm hẹp nó về một hình thức ô nhiễm môi trường cụ thể, ví dụ như ô nhiễm đối với đại dương. Chủ đề này có thể gồm vấn đề ô nhiễm bởi dầu, bởi chất hóa học, bởi chất thải, bởi rác. Do vậy, bạn có thể quyết định viết về ô nhiễm do tràn dầu đối với đại dương. Điểm lưu ý ở đây là, bạn phải làm hẹp chủ đề của đoạn văn vào một nội dung cụ thể và bạn có thể viết về nó một cách rõ ràng và tương đối đầy đủ.
Xem sơ đồ về quá trình làm hẹp chủ đề:

Làm hẹp chủ đề
Sau khi bạn đã chọn được một chủ đề và làm hẹp nó vào trong một vấn đề cụ thể, bước tiếp theo là viết ra các ý tưởng. Bước này được thực hiện bởi một quá trình được gọi là Tập kích não (Brain Storming). Bước này có thể giúp bạn viết nhanh hơn và tiết kiệm thời gian trong các giai đoạn tiếp theo của quá trình viết.
Bước 2: Tập kích não
Có ba kỹ thuật Tập kích não: Liệt kê theo danh sách, Viết tự do, và Liệt kê theo nhóm.
• Kỹ thuật liệt kê theo danh sách
Sử dụng kỹ thuật này bạn sẽ nghĩ về chủ đề đang viết và nhanh chóng lập một danh sách các từ hoặc cụm từ bất kỳ nảy sinh trong suy nghĩ của bạn. Mục đích là viết ra càng nhiều ý tưởng càng tốt trong thời gian ngắn để có thể tìm ra một chủ điểm cụ thể cho chủ đề của bạn.
Thực hiện các công việc sau:
o Viết ra chủ đề chung nhất lên đầu trang giấy của bạn.
o Sau đó liệt kê ra tất cả những ý tưởng mà bạn có thể nghĩ ra trong đầu về chủ đề này.
o Sử dụng bất kỳ từ ngữ hoặc câu nào bạn có thể nghĩ ra để diễn đạt, không cần lo lắng về ngữ pháp hay chính tả.
• Kỹ thuật viết tự do
Viết tự do là một hoạt động tập kích não mà bạn sẽ viết một cách tự do về một chủ đề với chủ điểm cụ thể. Trong lúc bạn viết, có thể một ý tưởng này sẽ sinh ra một ý tưởng khác. Cũng giống như kỹ thuật liệt kê, kỹ thuật viết tự do được sử dụng để sinh ra càng nhiều ý tưởng càng tốt và viết chúng ra giấy mà không cần quan tâm đến ngữ pháp, chính tả, tính lôgic hay trật tự. Vì thế, bạn viết càng nhiều thì càng có nhiều ý tưởng. Đừng thất vọng nếu bạn cảm thấy không có ý tưởng nào nữa. Cứ viết những gì bạn có thể viết.
Thực hiện các công việc sau:
o Viết chủ đề lên đầu trang giấy của bạn.
o Viết càng nhiều càng tốt về chủ đề cho đến khi không còn ý tưởng nào nữa. Bao gồm ý tưởng về thực tế, chi tiết và các ví dụ có thể nghĩ ra trong đầu bạn về chủ đề đó.
o Sau khi bạn viết hết các ý tưởng có thể nghĩ ra, đọc lại những gì đã viết và khoanh tròn vào những ý tưởng chính mà ta có thể phát triển thêm.
o Chọn ý tưởng chính đó và lặp lại viết tự do với nó.
• Kỹ thuật liệt kê theo nhóm
Liệt kê theo nhóm là một hoạt động tập kích não khác có thể được sử dụng để sinh ra các ý tưởng. Thực hiện các công việc sau:
o Viết chủ đề vào giữa trang giấy của bạn và khoanh tròn nó lại.
o Sau đó viết bất kỳ ý tưởng gì bạn có thể nghĩ ra vào xung quanh vòng tròn ở giữa và cũng khoanh tròn lại.
o Suy nghĩ về những ý tưởng mới thêm vào này và viết tiếp những ý tưởng liên quan đến nó vào vị trí xung quanh và khoanh tròn lại.
Đến đây, bạn đã hoàn thành giai đoạn chuẩn bị. Bây giờ hãy chuyển sang giai đoạn lập dàn ý.
(còn tiếp)
|
Chủ đề hẹp: |
|
MÔI TRƯỜNG |
|
Ô NHIỄM MÔI TRƯỜNG |
|
Ô NHIỄM ĐẠI DƯƠNG |
|
TRÀN DẦU TRÊN ĐẠI DƯƠNG |
|
ẢNH HƯỞNG ĐẾN CUỘC SỐNG SINH VẬT BIỂN |
|
Chủ đề rộng: |
![]() |
Tet, the Vietnamese New Year
Sources:
http://www.adoptvietnam.org/vietnamese/tet-lessonplan.htm
—————————————
Tet is the abbreviation of Tet Nguyen Dan which means the first morning of the first day of the new period. Tet marks the beginning of a new year on the lunar calendar, and the beginning of Spring. The New Year begins on the first night of the first moon after the sun enters Aquarius.
My family in Tet 2008 (The Year of Rat)
Tet is a huge celebration lasting three days. The Vietnamese take extreme care to start the New Year out right. They buy new clothes, paint and clean their homes, cook three days worth of food, pay off all debts and make amends to rid themselves of all bad feelings. Cleaning is frowned on during Tet because one would not want to sweep out any good luck.
Tet is a time for visits from family and friends. The first visitor to a home is very important. If the first visitor is rich, prestigious, or happy then the family will have good fortune that year. Usually this visitor is a relative, but sometimes the family will invite a special guest that they feel will bring them good luck. The first day of Tet is reserved for visiting family and relatives. The second day is set aside for special guests and close friends to visit, and the third day is for teachers and business associates to make a visit. Negative talk, and arguments are taboo. Visitors end their visit with a farewell wish for the family such as, “I wish that money will flow into your house like water, and out like a turtle.”
Một Số Gợi Ý Để Làm Luận Văn Tốt Nghiệp
Bài viết này đưa ra một số gợi ý để làm luận văn tốt nghiệp đại học.
Tài liệu tham khảo:
How To Write an Undergraduate Thesis
———————————————————–
Hãy nhớ rằng luận văn tốt nghiệp là một điểm rất quan trọng khi bạn viết lý lịch xin việc. Người ta nhìn vào đó để có thể thấy lĩnh vực nào mà bạn ưa thích hoặc có kiến thức sâu. Luận văn tốt nghiệp cũng là một phần quan trọng trong toàn bộ quá trình học tập của bạn. Có một số gợi ý sau có thể giúp bạn hoàn thành luận văn tốt nghiệp.
1. Lựa chọn đề tài
Nếu bạn đang băn khoăn về việc nên chọn ý tưởng nào cho luận văn tốt nghiệp, hãy nghĩ về các câu hỏi sau:
- Bạn quan tâm đến lĩnh vực nào?
- Môn học nào là môn học ưa thích của bạn?
- Nếu thời gian và tiền bạc không thành vấn đề thì bạn sẽ nghĩ đến chủ đề nào đầu tiên?
2. Hãy cụ thể
Chủ đề của luận văn rất quan trọng và nên được xem xét cẩn thận. Bạn nên cụ thể hóa vấn đề cần làm trong chủ đề đã lựa chọn. Càng cụ thể hóa thì bạn càng dễ hình dung những công việc cần thực hiện trong luận văn của mình.
Nếu bạn là sinh viên ngành sinh học và quan tâm đến ứng xử của loài chim, một luận văn về xu hướng di trú của chim sẽ rất phù hợp. Đối với ví dụ này, bạn nên hạn chế nó vào một loài chim cụ thể ở tại một địa điểm nào đó. Nếu bạn là sinh viên ngành kỹ sư máy tính và quan tâm đến vấn đề nén dữ liệu, bạn có thể làm một luận văn về việc cài đặt một ứng dụng nén cho dữ liệu dạng văn bản (text compression) với một vài thuật toán cụ thể như Huffman và LZW, sau đó bạn so sánh hiệu quả của từng thuật toán. Nếu bạn là sinh viên ngành khoa học máy tính và quan tâm đến mã hóa dữ liệu, bạn có thể làm một luận văn về việc nâng cao tính an toàn của việc mã hóa dữ liệu bằng thuật toán DES. Bạn sẽ chứng minh nó bằng các công thức toán học và cài đặt thử.
3. Tìm một người hướng dẫn
Thông thường bạn sẽ được yêu cầu tìm một giáo viên hướng dẫn để hỗ trợ cho công việc của bạn. Các gợi ý bạn có thể nhận được từ người hướng dẫn là rất có giá trị. Sẽ tốt hơn nếu người hướng dẫn của bạn có cùng hướng nghiên cứu, nhưng thậm chí nếu người hướng dẫn không có nhiều quan tâm đến chủ đề của bạn thì họ cũng có thể chia sẻ với bạn về phương thức nghiên cứu và cách hoàn thiện sản phẩm cuối cùng.
4. Tham gia một khóa học ngắn
Luận văn của bạn yêu cầu thực hiện rất nhiều công việc. Tại sao bạn không tham gia vào một khóa học ngắn nào đó. Tùy thuộc vào điều kiện mà bạn có thể chọn một khóa học ngắn phù hợp. Nếu bạn làm luận văn về thiết kế một website bán hàng qua mạng, một khóa học về thiết kế giao diện web hoặc sử dụng một ngôn ngữ lập trình web có thể thích hợp. Điều này sẽ giúp bạn hoàn thành công việc tốt hơn trong khoảng thời gian ngắn hơn.
5. Tạo một kế hoạch làm việc
Bạn sẽ thực hiện luận văn của bạn như thế nào? Những tài nguyên nào bạn cần có? Bạn sẽ yêu cầu sử dụng thiết bị ở phòng thực hành hay sự giúp đỡ của ai đó? Bạn có thể thực hiện toàn bộ luận văn trong thư viện trường, hay bạn cần sử dụng các tài liệu đặc biệt khác? Công việc này chiếm thời gian bao lâu? Hãy trả lời cho những câu hỏi này để lập một kết hoạch hành động chi tiết cho toàn bộ luận văn.
6. Dành thời gian để làm luận văn
Hãy tập trung vào mục tiêu của luận văn khi bạn đối mặt với sự căng thẳng của cuộc sống hằng ngày. Bạn có thể dễ dàng trì hoãn công việc đang làm sang một ngày khác. Sẽ là rất tốt nếu bạn xếp độ ưu tiên cho công việc trong thời gian biểu của bạn. Thay vì phải làm luận văn vào những ngày có công việc cần thiết, bạn có thể dành thời gian khác để thực hiện nó. Nhưng bạn nên hạn chế sử dụng sự linh hoạt này.
7. Hãy lưu giữ những việc đã làm cẩn thận
Luận văn tốt nghiệp của có tốt hay không tùy thuộc vào thông tin mà bạn tìm được. Khi nào bạn phải lưu ý một điều gì đấy hoặc thu thập dữ liệu ở phòng thực hành, hãy làm điều đó cẩn thận. Bằng cách lưu trữ một bản dự phòng và kiểm tra chắc chắn dữ liệu đã được thu thập.
8. Trau chuốt công việc của bạn
Bạn luôn muốn luận văn của bạn sẽ được trình bày với kết quả tốt nhất. Vì vậy một vài lỗi in ấn đơn giản cũng làm giảm giá trị của luận văn. Nếu bạn không hài lòng với kỹ năng viết của bạn, hãy tìm ai đó giúp đỡ công việc này.
9. Trình bày kết quả làm việc của mình
Một khi bạn đã hoàn thành luận văn, đừng giữ khư khư nó cho bản thân mình. Hãy chia sẻ nó với mọi người. Bạn có thể học thêm nhiều điều mà bạn chưa đề cập tới trong luận văn. Điều này tăng thêm giá trị cho lý lịch xin việc của bạn.
Nếu bạn thực hiện theo những gợi ý này, bạn sẽ nhanh chóng hoàn thành luận văn một cách tốt nhất. Chúc bạn thành công.
John và David
(Một câu chuyện hài hước được lấy từ website Funny Jokes)
John và David đều là những bệnh nhân của một bệnh viện tâm thần. Một ngày nọ, bỗng nhiên John nhảy lao đầu xuống bể bơi và bị ngộp nước. David đã nhảy xuống và cứu anh ấy lên. Sau đó bác sỹ quản lý đến để khen ngợi hành động dũng cảm đó…
Ông ta lập tức cho phép David được xuất viện vì nghĩ rằng anh ấy đã hoàn toàn bình phục.
Bác sỹ: Chúng tôi có một tin tốt lành và một tin xấu dành cho anh đấy David. Tin tốt là anh sẽ được đồng ý xuất viện vì anh đã lấy lại được trạng thái tỉnh táo, anh đã nhảy xuống bể bơi và cứu một bệnh nhân khác khỏi chết đuối, điều đó chứng tỏ bây giờ anh là một người hoàn toàn bình thường. Còn tin xấu đó là John, người được anh cứu, đã tự treo cổ ở trong nhà tắm và đã chết.
David: Ồ không phải anh ta tự treo cổ đâu thưa bác sỹ. Tôi đã treo anh ấy lên đấy cho khô đấy.
Tổng quan về Java: Lập trình hướng đối tượng
Bài viết này giới thiệu tổng quan về đặc điểm hướng đối tượng trong ngôn ngữ lập trình Java.
Tài liệu tham khảo:
Chapter 2, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.
———————————————————
Lập trình hướng đối tượng là cốt lõi của Java. Trên thực tế tất cả các chương trình viết bằng Java đều là hướng đối tượng chứ không phải là một tùy chọn như trong C++.
Hai mô hình lập trình
Tất cả các chương trình máy tính đều bao gồm hai thành phần: mã lệnh và dữ liệu. Một vài chương trình được viết theo hướng quan tâm đến mã lệnh, nghĩa là quan tâm đến “Cái gì đang xảy ra”, và các chương trình khác có thể được viết theo hướng quan tâm đến dữ liệu, nghĩa là quan tâm đến “Cái gì đang bị tác động đến”. Hai mô hình này ảnh hưởng đến cách xây dựng chương trình. Cách đầu tiên gọi là mô hình hướng thủ tục. Theo cách tiếp cận này một chương trình được xem như là một dãy là bước tuần tự. Các ngôn ngữ lập trình cấu trúc như C sử dụng mô hình này. Tuy nhiên, vấn đề đối với cách tiếp cận này là kích thước lớn và tính phức tạp của chương trình. Cách tiếp cận thứ hai được gọi là lập trình hướng đối tượng. Lập trình hướng đối tượng tổ chức một chương trình theo xoay quanh dữ liệu của nó và một tập các giao tiếp được định nghĩa tác động đến dữ liệu đó.
Sự trừu tượng hóa
Một thành phần cơ bản của lập trình hướng đối tượng là sự trừu tượng hóa. Con người quản lý tính phức tạp thông qua sự trừu tượng hóa. Ví dụ, ta không nghĩ về chiếc xe hơi như là một tập gồm hàng ngàn chi tiết riêng biệt. Ta xem nó là một đối tượng cụ thể với các đặc điểm riêng của nó. Sự trừu tượng hóa này cho phép ta sử dụng chiếc xe hơi mà không bị rối rắm bởi sự phức tạp của các phần tạo nên chiếc xe.
Một cách hữu hiệu để quản lý sự trừu tượng hóa là sử dụng sự phân lớp. Điều này cho phép ta phân tầng sự phức tạp của hệ thống, chia nhỏ thành các phần có thể quản lý được. Ví dụ, xe hơi được xem là một đối tượng. Chi tiết hơn, xe hơi bao gồm nhiều hệ thống con như: tay lái, ghế ngồi, dàn âm thanh. Giàn âm thanh bao gồm máy nghe CD, băng đĩa …
Ba yếu tố cơ bản của lập trình hướng đối tượng
Tất cả các ngôn ngữ lập trình hướng đối tượng đều cung cấp các cơ chế cho phép bạn cài đặt mô hình hướng đối tượng. Đó là tính đóng gói, tính kế thừa và tính đa hình.
Tính đóng gói
Đây là cơ chế kết hợp giữa mã lệnh với dữ liệu mà nó xử lý, và tránh bị ảnh hưởng bởi sự can thiệp từ bên ngoài. Tính đóng gói được xem như là một lớp vỏ bọc bảo vệ mã lệnh và dữ liệu tránh khỏi sự truy cập tùy tiện từ các mã lệnh khác. Việc truy cập được điều khiển một cách chặt chẽ thông các các thủ tục đã được định nghĩa.
Tính kế thừa
Tính kế thừa là quá trình mà một đối tượng nhận được các tính chất từ một đối tượng khác. Thông thường, mỗi đối tượng cần được định nghĩa tất cả các tính chất của nó. Tuy nhiên, bằng cách sử dụng sự kế thừa, mỗi đối tượng chỉ cần được định nghĩa các tính chất riêng biệt của nó, các tính chất chung được định nghĩa ở trong đối tượng mà nó kế thừa.
Tính đa hình
Đây là đặc điểm cho phép một hình thức giao tiếp có thể được sử dụng cho nhiều hành động có tính chất giống nhau. Việc thực thi hành động cụ thể nào đó tùy thuộc vào tình huống xảy ra. Điều này làm giảm tính phức tạp của chương trình.
Kết hợp tính đóng gói, tính kế thừa và tính đa hình
Sự kết hợp các yếu tố này tạo ra một môi trường lập trình tốt hơn so với mô hình lập trình hướng thủ tục. Tính kế thừa giúp cho việc sử dụng lại mã lệnh đã được cài đặt và kiểm tra trước đó. Tính đóng gói cho phép bạn thay đổi sự cài đặt mà không phải quan tâm nhiều đến mã lệnh, bạn chỉ cần quan tâm đến sự giao tiếp với các lớp đã có. Tính đa hình cho phép bạn viết các chương trình rõ ràng, hợp lý, và linh hoạt.
Sự ra đời của Java
Bài viết này giới thiệu về sự ra đời của ngôn ngữ lập trình Java.
Tài liệu tham khảo:
Chapter 1, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.
—————————————————————–
Nền tảng được thiết lập cho Java
Vào cuối thập niên 80 và đầu thập niên 90, ngôn ngữ lập trình hướng đối tượng C++ được sử dụng phổ biến. Dường như các lập trình viên đã tìm được một ngôn ngữ lập trình hoàn hảo. Bởi vì C++ pha trộn tính hiệu quả cao và các yếu tố phong cách C với mô hình hướng đối tượng. Tuy nhiên, cũng như trong quá khứ, một lần nữa đã thay đổi sự phát triển của ngôn ngữ máy tính. Chỉ trong vòng vài năm, World Wide Web và Internet đã đến với số đông. Điều này chuẩn bị cho một cuộc cách mạng trong ngôn ngữ lập trình.
Sự ra đời của Java
Java được hình thành bởi James Gosling, Patrick Naughton, Chris Warth, Ed Frank, và Mike Sheridan tại Sun Microsystems năm 1991. Sau hơn 18 tháng để phát triển phiên bản đầu tiên. Ngôn ngữ này lúc đầu được gọi là “Oak” nhưng sau đó được đổi tên thành Java vào năm 1995. Ở giữa khoảng thời gian của phiên bản đầu tiên năm 1992 và thông báo công khai của Java vào năm 1995, nhiều người đã đóng góp vào sự thiết kế và tiến hóa của ngôn ngữ này.
Đáng ngạc nhiên là sự thúc đẩy ban đầu của Java không phải là Internet. Thay vào đó động cơ chính là sự cần thiết của một ngôn ngữ có nền tảng độc lập (hay là kiến trúc trung lập) có thể được dùng để tạo ra phần mềm được nhúng trong nhiều thiết bị tiêu dùng điện tử khác nhau. Ta có thể đoán được, nhiều kiểu CPU được dùng như là bộ điều khiển. Vấn đề rắc rối đối với C và C++ (hay hầu hết các ngôn ngữ khác) là chúng được thiết kế để được biên dịch cho một đối tượng nhất định. Mặc dù có thể biên dịch một chương trình C++ cho bất cứ loại CPU nào, để làm điều đó đòi hỏi một trình biên dịch C++ đầy đủ cho CPU đó. Vấn đề là trình biên dịch đó rất đắt đỏ và mất nhiều thời gian để tạo ra nó. Vì vậy cần một giải pháp dễ dàng và hiệu quả hơn. Trong nỗ lực để tìm ra giải pháp đó, Gosling và các đồng nghiệp bắt đầu làm việc trên một ngôn ngữ linh động và độc lập với nền tảng, nó có thể được dùng để sinh ra mã có thể thực thi được trên các CPU khác nhau dưới các môi trường khác nhau. Sự cố gắng này cơ bản dẫn đến sự ra đời của Java.
Nhiều đặc điểm của Java bắt nguồn từ C và C++. Những người thiết kế Java biết rằng sử dụng cú pháp tương tự C sử dụng đặc trưng hướng đối tượng của C++ sẽ làm cho ngôn ngữ này lôi cuốn được nhiều các lập trình viên C/C++ có kinh nghiệm. Thêm vào đó, Java chia sẻ một vài tính chất khác làm cho C và C++ thành công.
Trước hết, Java được thiết kế, thử nghiệm và cải tiến bởi thực tế của các lập trình viên. Nó là một ngôn ngữ dựa vào sự cần thiết và kinh nghiệm của những người đã nghĩ ra nó. Vì thế Java cũng là một ngôn ngữ của các lập trình viên. Thứ hai, Java có tính liên kết và logic nhất quán. Thứ ba, không kể đến hạn chế bắt buộc của môi trường Internet, Java mang đến cho lập trình viên khả năng điều khiển đầy đủ. Nếu một chương trình làm việc tốt hay tồi, chương trình đó phản ánh đúng chính nó. Java không phải là một ngôn ngữ lập trình để tập tập dượt mà là một ngôn ngữ dành cho các lập trình viên chuyên nghiệp
Bởi vì những đặc điểm tương tự giữa Java và C++, người ta có thể nghĩ đơn giản Java là phiên bản Internet của C++. Tuy nhiên, không hoàn toàn phải vậy. Java có ý nghĩa thực thực tế và nguyên lý khác. Trong khi Java chịu ảnh hưởng của C++ nhưng nó không phải là một phiên bản nâng cao của C++. Ví dụ, Java không tương thích với bất cứ phiên bản nào của C++. Dĩ nhiên, sự tương đồng với C++ có ý nghĩa là nếu bạn là lập trình viên C++, bạn sẽ cảm thấy dễ dàng khi làm việc với Java. Một điểm khác: Java không phải được thiết kế để thay thế cho C++. Java được thiết kế để giải quyết các vấn đề đang tồn tại. C++ được thiết kế để giải quyết các vấn đề dạng khác. Cả hai sẽ cùng tồn tại trong nhiều năm nữa.
Sự ra đời của C và C++
Bài viết này giới thiệu về sự ra đời của ngôn ngữ lập trình C và C++.
Tài liệu tham khảo:
Chapter 1, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.
—————————————————————–
Trong lịch sử ra đời của các ngôn ngữ lập trình, người ta nói rằng ngôn ngữ lập trình B đã dẫn đến ngôn ngữ lập trình C, Ngôn ngữ lập trình C tiến hóa thành ngôn ngữ lập trình C++, và Ngôn ngữ lập trình C++ thiết lập nền tảng cho ngôn ngữ lập trình Java. Hiểu được Java nghĩa là hiểu những nguyên nhân dẫn đến sự hình thành của nó và những gì mà nó kế thừa. Java là sự pha trộn của những thành phần tốt nhất mà nó kế thừa kết hợp với những khái niệm mới được đòi hỏi bởi môi trường đặc trưng của nó.
Sự ra đời của lập trình hiện đại: Ngôn ngữ lập trình C
Ngôn ngữ lập trình C đã làm thay đổi thế giới máy tính. Sự tác động của nó nhiều khi không được đánh giá đúng mức. Nó thay đổi cách tiếp cận và nhìn nhận về lập trình một cách cơ bản. Sự ra đời của C là kết quả trực tiếp của sự cần thiết phải thay đổi về cấu trúc, hiệu quả, ngôn ngữ bậc cao thay thế cho mã máy khi viết các chương trình hệ thống. Như chúng ta biết, khi thiết kế một ngôn ngữ lập trình, sự cân nhắc luôn được xem xét giữa:
- Tính dễ dàng sử dụng và sức mạnh
- Sự an toàn và hiệu quả
- Sự chặt chẽ và khả năng mở rộng
Trước khi có C, lập trình viên thường xuyên phải chọn giữa các ngôn ngữ đã thu gọn một tập các đặc điểm. Ví dụ, mặc dù FORTRAN có thể được dùng để viết các chương trình hiệu quả cho các ứng dụng khoa học, nhưng nó không tốt lắm cho viết mã hệ thống. Trong khi BASIC dễ dàng cho người học thì nó lại không đủ mạnh và thiếu các cấu trúc cho các chương trình lớn. Ngôn ngữ Assembly có thể được dùng để viết các chương trình hiệu quả cao nhất nhưng không dễ dàng để sử dụng cũng như gỡ rối rất khó khăn.
Một vấn đề khác là các ngôn ngữ lập trình như BASIC, COBOL, và FORTRAN không được thiết kế dựa trên các yếu tố cấu trúc. Chúng dựa trên lệnh GOTO để điều khiển chương trình. Vì vậy mà các chương trình được viết bởi các ngôn ngữ này hướng tới việc sinh ra mã spagheti – một khối lộn xộn các lệnh nhảy và rẽ nhánh làm cho chương trình không thể hiểu được. Trong khi ngôn ngữ như Pascal là ngôn ngữ cấu trúc, nó không được thiết kế để đạt hiệu quả cao, và thiếu các đặc điểm cần thiết để ứng dụng cho những chương trình lớn. Vì thế, trước khi có ngôn ngữ C, không có ngôn ngữ nào có thể dung hòa được sự xung đột đã tồn tại trước đó.
C được phát minh và được cài đặt đầu tiên bởi Dennis Ritchie trên một máy DEC PDP-11 sử dụng hệ điều hành UNIX. C là kết quả của quá trình phát triển từ một ngôn ngữ trước đó được gọi là BCPL, phát triển bởi Martin Richards. BCPL chịu ảnh hưởng của một ngôn ngữ lập trình gọi là B, phát minh bởi Ken Thompson, đã dẫn đến sự ra đời của C và những năm 70. Trong nhiều năm, chuẩn không chính thức C được hỗ trợ bởi hệ điều hành UNIX và được mô tả trong cuốn “The C Programming Language” của Brian Kerninghan và Dennis Ritchie. C trở thành chuẩn phổ biến vào tháng Mười hai năm 1989, khi tổ chức ANSI công nhận.
Sự ra đời của C đã đánh dấu một thời kỳ mới của ngôn ngữ máy tính. Nó đã giải quyết được các xung đột tồn tại trong các ngôn ngữ trước đó. Kết quả là sự mạnh mẽ, hiệu quả và ngôn ngữ cấu trúc dễ học. Nó cũng là một ngôn ngữ của lập trình viên. Trước đó, các ngôn ngữ lập trình thường được thiết kế như là bài tập có tính chất học thuật nhưng C thì khác. Nó được thiết kế và cài đặt bởi thực tế, bởi các lập trình viên, phản ánh cách họ tiếp cận với công việc lập trình. Các đặc điểm của nó được trau chuốt, kiểm tra, và cân nhắc bởi chính những người sử dụng ngôn ngữ. Kết quả là một ngôn ngữ được các lập trình viên ưa thích.
Sự cần thiết của C++
Trong suốt thập niên 70 và 80, C trở thành ngôn ngữ lập trình nổi trội, và nó vẫn còn được sử dụng cho đến ngày nay. C là một ngôn ngữ thành công và hữu ích, vậy tại sao chúng ta phải cần đển một ngôn ngữ mới. Câu trả lời là tính phức tạp của chương trình.
Trong lịch sử của lập trình, sự gia tăng tính phức tạp của các chương trình đã dẫn đến yêu cầu cần có một cách tốt hơn để quản lý nó. C++ đáp ứng sự cần thiết đó. Để hiểu rõ hơn tại sao quản lý tính phức tạp của chương trình là cơ sở cho sự ra đời của C++, ta xem những vấn đề sau:
Khi máy tính mới được phát minh, lập trình được thực hiện bởi việc đưa vào các chỉ dẫn máy nhị phân bằng cách sử dụng các front panel. Cách tiếp cận này làm việc với các chương trình nhỏ vài trăm chỉ dẫn. Sau đó, ngôn ngữ Assembly được phát minh, các lập trình viên có thể làm việc với chương trình lớn hơn, phức tạp hơn bằng cách sử dụng các biểu diễn ký hiệu của các chỉ dẫn máy. Tiếp tục, ngôn ngữ cấp cao được giới thiệu nhằm cung cấp cho lập trình viên các công cụ có thể quản lý được tính phức tạp của chương trình.
Ngôn ngữ phổ biến đầu tiên là FORTRAN. Trong khi FORTRAN là sự đột phá đầu tiên, nó không phải là ngôn ngữ dễ hiểu và dễ sử dụng. Những năm 60 đánh dấu sự ra đời của ngôn ngữ lập trình có cấu trúc. Sử dụng ngôn ngữ lập trình có cấu trúc cho phép lập trình viên viết các chương trình có tính phức tạp vừa phải một cách dễ dàng. Tuy nhiên, khi kích thước của dự án (project) đến một mức nào đó, tính phức tạp của nó vượt ra khỏi tầm kiểm soát của lập trình viên. Đầu những năm 80, nhiều dự án được tiếp cận theo cấu trúc đã vượt qua giới hạn của nó. Để giải quyết vấn đề này, một cách thức lập trình mới ra đời, được gọi là lập trình hướng đối tượng (OOP – Object Oriented Programming). Lập trình hướng đối tượng là phương thức lập trình giúp cho việc tổ chức các chương trình phức tạp thông qua sự kế thừa, sự gói gọn và đa dạng.
Cuối cùng, mặc dù C là một trong những ngôn ngữ lập trình vĩ đại của thế giới, nó có giới hạn về khả năng quản lý độ phức tạp. Khi một chương trình nhiều hơn từ 25.000 đến 100.000 dòng lệnh, nó trở nên quá khó khăn để hiểu được tổng thể. C++ cho phép vượt qua giới hạn này, giúp cho lập trình viên hiểu và quản lý được các chương trình lớn hơn.
C++ được phát minh bởi Bjarne Stroustrup vào năm 1979 khi đang làm cho Bell Laboratories. Stroustrup mới đầu gọi ngôn ngữ mới là “C with Classes”. Tuy nhiên, vào năm 1983, tên của nó được đổi thành C++. Ngôn ngữ C++ mở rộng C bằng cách thêm vào các đặc điểm hướng đối tượng. Bởi vì C++ được xây dựng dựa trên cở sở của C nên nó bao gồm tất cả các đặc điểm của C, tính chất và lợi ích mang lại. Đây là nguyên nhân cốt yếu làm nên sự thành công của ngôn ngữ C++. Sự phát minh ra C++ không phải là tạo ra một ngôn ngữ lập trình hoàn toàn mới mà nó được nâng cấp từ một ngôn ngữ đã thành công trước đó.



