Kvant

Bản dịch tự động sơ bộ, chất lượng thấp: có thể còn lỗi và câu chữ chưa tự nhiên. Bản này sẽ được thay bằng bản dịch tốt hơn. Bản gốc →

47

Tại sao bạn cần biết lập trình?

Việc sử dụng rộng rãi máy tính đã dẫn đến sự xuất hiện của một ngành khoa học mới và một loại nghề nghiệp mới, một nghề mới - lập trình.

Điều quan trọng là phải hiểu ngay rằng lập trình không chỉ là khả năng truyền lệnh đến máy. Nó quan trọng đối với bản thân người đó và có tác động rõ rệt đến anh ta. Ở một khía cạnh nào đó, bản thân con người và thậm chí cả nhóm người thường hành động theo những chương trình nhất định. Hơn nữa, bản thân chúng ta cũng đang sống trong thế giới lập trình mà đôi khi chúng ta không nhận ra điều đó.

Thế giới của chương trình
Chương trình là một tập hợp các lệnh có hai thuộc tính quan trọng: tính đầy đủ - mỗi lệnh rất đơn giản và tách biệt nên luôn có thể được thực thi; sự chắc chắn - bất cứ lúc nào cũng có thể biết lệnh nào sẽ được thực thi tiếp theo.

Hai thuộc tính này của chương trình có lẽ là quan trọng nhất: chúng giải thích lý do tại sao chương trình cung cấp cho máy tính khả năng hoạt động tự động và liên tục, dẫn đến kết quả hữu ích.

Hãy để chúng tôi đưa ra một ví dụ về một chương trình toán học thuần túy trong đó hai thuộc tính này không xuất hiện:

Trạng thái ban đầu: cho hai số tự nhiên.

Bước 1. Nếu các số bằng nhau thì lấy số đầu tiên làm kết quả và dừng lại.

Bước 2. Nếu chúng không bằng nhau, hãy trừ đi phần nhỏ hơn từ phần lớn và phần chênh lệch, phần nhỏ hơn được điều khiển bởi chương trình phức tạp của nó. Cho dù chúng ta đi, thở, đọc, chịu lạnh, trằn trọc trong giấc ngủ - tất cả đều là kết quả hoạt động của nhiều chương trình sinh học được đưa vào chúng ta về mặt di truyền (di truyền), hoặc được hình thành dưới tác động của môi trường, hoặc được phát triển một cách có ý thức. Sẽ không quá lời khi nói rằng hầu hết mọi việc chúng ta làm đều được thực hiện theo một chương trình và khi suy ngẫm, chúng ta chủ yếu điều chỉnh lại các chương trình cũ và lập kế hoạch cho tương lai.

Khả năng lên kế hoạch trước cho hành động của mình là đặc điểm quan trọng nhất trong hành vi của con người. Các lập trình viên xuất sắc theo nghĩa này là các vận động viên thể thao, phi hành gia, nghệ sĩ, bác sĩ phẫu thuật - nói một cách dễ hiểu, tất cả những người phải hành động liên tục, phức tạp và không có lỗi. Đồng thời, những lập trình viên có định hướng cũng là những người có vẻ ngoài thận trọng, rụt rè, khi thấy mình ở một môi trường mới, họ sẽ khiến những người lớn tuổi choáng ngợp với những câu hỏi như “Tiếp theo là gì?”, “Nếu như?”, “Ở đâu?”, “Sau đó thì sao?” vân vân.

Từ xa xưa, dường như trẻ em học chủ yếu bằng cách bắt chước, bắt chước hành vi của người lớn tuổi. Chỉ gần đây, khi quá trình học tập được làm trơn tru qua kính lúp phân tích logic, người ta mới phát hiện ra rằng không chỉ tinh thần mà thậm chí nhiều kỹ năng vận động của một người chỉ được phát triển bằng cách hiểu bản chất của chúng, tìm ra các chuyển động và vị trí cơ bản, nhận thức và củng cố chúng trong ý thức trong

48

trình tự mong muốn và sau đó được huấn luyện để hoàn thành tính tự động.

Chương trình máy tính

Bây giờ là lúc để hỏi vai trò đặc biệt của máy tính trong thế giới chương trình này là gì. Thực tế là chính máy tính, với sự xuất hiện và tồn tại của chúng, đã biến các chương trình trở thành đối tượng nghiên cứu toán học và tạo ra lập trình như một ngành toán học phổ biến nhất.

Các nhà toán học và triết học, phối hợp với các nhà sinh học và kỹ sư, đã chứng minh một cách thuyết phục rằng các quy luật điều khiển và xử lý thông tin, các thuật toán và chương trình liên quan đến hệ thống sinh học, mặt khác, và các máy tự động, đều được cấu trúc theo cùng một cách; những lý thuyết và trừu tượng toán học giống nhau đều phù hợp với chúng. Máy tính, nhờ tốc độ khổng lồ và khả năng thực thi bất kỳ chương trình nào, về nguyên tắc có thể tái tạo bất kỳ hành động “chính xác” nào. Điều này làm cho máy tính không chỉ là người trợ giúp ngoan ngoãn và nhiệt tình của chúng ta mà còn là người đánh giá bức tranh kiến ​​thức của chúng ta về hành động mà chúng ta muốn chuyển sang máy.

Chúng ta hãy quay lại chương trình hai lệnh của chúng ta, chương trình này, có thể độc giả sẽ đồng ý, tính ước số chung lớn nhất của hai số. Để máy tính thực thi chương trình này, tất nhiên, nó phải “biết”, chẳng hạn như “trừ một số nhỏ hơn cho một số lớn hơn”. Đồng thời, cô ấy sẽ luôn làm việc thành công để đạt được kết quả mà không cần biết ước chung lớn nhất là gì. Nhưng người lập trình, chương trình phong phú, phải biết rất rõ máy sẽ làm gì và chương trình tương ứng có những đặc tính gì.

Bài toán. Chứng minh rằng chương trình trên cho một cặp số tự nhiên ban đầu bất kỳ đều cho kết quả bằng ước chung lớn nhất của chúng.

Vì vậy, chương trình hỏi chúng ta kiến ​​thức đầy đủ về bài toán, và, không giống như một định lý hoặc bài luận, ở dạng chủ động, tùy ý nhiều lần. Một cỗ máy được hỗ trợ bởi chương trình này sẽ tính toán ước số chung lớn nhất cũng như cậu học sinh khôn ngoan nhất đã thành thạo lập luận. Chính ở sự chuyển giao liên tục khả năng của con người sang máy tính để thực hiện nhất quán các hoạt động có mục đích mà bản chất của cuộc cách mạng khoa học và công nghệ gắn liền với việc tự động hóa công việc trí óc nằm ở chỗ.

“Biết chữ thứ hai”

Hơn năm trăm năm trước, nhân loại đã phát minh ra nghề in ấn. Mục đích trước mắt của phát minh này là mong muốn đẩy nhanh quá trình viết lại sách nhà thờ. Kết quả khách quan của nó là sự gia tăng phi thường về tốc độ tiến bộ của con người thông qua khả năng đọc viết phổ cập và sự phổ biến của chữ in.

Máy thêu điện tử xuất hiện khoảng 35 năm trước, vào thời kỳ đỉnh cao của Thế chiến thứ hai. Mục đích trước mắt của lần sử dụng đầu tiên là tăng tốc độ tính toán trong quá trình phát triển hệ thống vũ khí. Tuy nhiên, chúng ta có thể thấy đã đến lúc máy tính, được tạo ra với số lượng mười triệu bản, sẽ là đối tác trung thành và dễ hiểu của chúng ta ở mọi nơi trên Trái đất và trong mọi loại hoạt động của chúng ta.

Vào thời điểm này, lập trình, tức là khả năng thể hiện bất kỳ quy trình “chính xác” nào bằng các phương tiện có sẵn để truyền tới máy, trở thành khả năng đọc viết thứ hai của từng mục tiêu được xử lý. Nhưng đây là trong tương lai. Và bây giờ thách thức mà LINK phải đối mặt là chứng kiến ​​tình trạng “mù chữ thứ hai”. Bạn phải nắm vững những kiến ​​thức cơ bản về lập trình.

Để làm được điều này, trước hết cần trả lời câu hỏi - máy tính cần giảm bớt những gì?

Máy móc sẽ chỉ tính toán?

Chín trong số mười độc giả có khả năng phản hồi điều này

49

câu hỏi gần như không cần suy nghĩ: máy móc rất thông minh khi thực hiện các phép tính số học trên các số có nhiều chữ số với tốc độ cực lớn, vì vậy chúng có thể thay thế một người ở bất cứ nơi nào bạn cần để thực hiện các phép tính phức tạp, giải phương trình, lập bảng, tính toán quỹ đạo của tàu vũ trụ hoặc thiết kế của máy bay - nói tóm lại, khi bạn cần đếm, tính toán - xét cho cùng, không phải tự nhiên mà chúng được gọi là công nghệ máy tính.
Khoảng 15-20 năm trước, hầu hết các chuyên gia khoa học máy tính đều đồng ý với điều này đáp số.

  • Hôm nay không phải vậy sao? - một độc giả ngạc nhiên có thể hỏi. — Máy móc hiện đại có quên cách đếm không?
    Không, tất nhiên là chúng tôi không quên cách thực hiện. Số lượng bài toán, đối với lời giải trong số đó bạn chỉ cần có thể thực hiện nhanh chóng và chính xác các phép tính theo các công thức và quy tắc đã biết, không những không giảm trong những năm gần đây mà thậm chí còn tăng lên và với những chiếc máy bài toán hiện tại như vậy, tất nhiên, sẽ làm rất tốt. Nhưng máy tính không còn là lĩnh vực duy nhất và rõ ràng không phải là lĩnh vực chính mà máy tính hỗ trợ con người.

Hệ thống Sirena bán vé
Hãy xem xét một ví dụ. Như bạn đã biết, những chiếc máy bay hiện đại có thể đưa bạn đến những điểm xa xôi nhất nước ta chỉ trong vòng vài giờ. Nhưng việc xuất vé máy bay đôi khi mất nhiều thời gian hơn so với chuyến bay. Việc đặt chỗ đặc biệt tốn thời gian nếu bạn cần chuyển sang máy bay khác, chẳng hạn như ở Kyiv, Gorky hoặc một thành phố lớn khác. Đại lý Aeroflot nơi bạn đã đặt vé sẽ gửi tin nhắn điện thoại đến điểm chuyển tiếp với yêu cầu đặt chỗ cho bạn trên chuyến bay đó. Người điều phối chuyến bay này sẽ mở bảng tương ứng, hủy chỗ đã đặt trước và lập số điện thoại phản hồi, trên cơ sở đó sẽ xuất vé cho bạn. Tất cả điều này mất từ ​​​​ba đến bốn ngày - đây là nếu mọi thứ đều ổn, không một mảnh giấy nào bị kẹt ở bất cứ đâu và có ghế trống trên chuyến bay mong muốn.

Nhưng nếu bạn phải chuyển sang một máy bay khác ở Moscow, thì việc xuất vé rất có thể sẽ mất không quá hai đến ba phút. Thực tế là việc đấu thầu vé ở Moscow được thực hiện bằng hệ thống Sirena tự động, dựa trên một máy tính mạnh mẽ.

ACS “SIRENA”
Kuyarvueva U.R.
VÉ
AM 213474
NHÃN DỊCH VỤ
SỰ KHỞI HÀNH
CHUYẾN BAY
CON SỐ
THÁNG
ĐỒNG HỒ
PHÚT
ĐỊA ĐIỂM
9 2 7
26 02 19 50 01A
RÁC
TBILISI
SỐ TIỀN MẶT
2 5 7 5 3 1 1 1 0 3
2 3 0 2 7 9

50

Các điều khiển từ xa đặc biệt để liên lạc với máy tính này - cái gọi là thiết bị đầu cuối - được lắp đặt ở hầu hết các thành phố lớn ở nước ta. Mỗi điều khiển từ xa đều có các phím tương tự như bàn phím của máy đánh chữ thông thường, một màn hình nhỏ hiển thị các thông báo từ máy tính và một thiết bị in.

Giả sử rằng chúng tôi đến gặp nhà điều hành hệ thống Sirena ở Novosibirsk với yêu cầu xuất một số vé cho một trong các chuyến bay Moscow-Kharkov. Người vận hành gõ yêu cầu thích hợp trên bàn phím và sau một hoặc hai giây, đáp số của máy sẽ xuất hiện trên màn hình. Trong những giây này, một máy tính đặt cách Novosibirsk vài nghìn km đã xem qua lịch trình, chọn một chuyến bay thuận tiện cho chúng tôi, xác định có bao nhiêu ghế trống trên đó, trả lời số ghế và báo cáo số ghế của họ cho nhà điều hành Novosibirsk - nói một cách dễ hiểu, nó đã bán hết công việc mất vài ngày.

Nếu những chỗ ngồi do máy cung cấp chấp nhận chúng tôi, người điều hành sẽ nhập một thông báo xác nhận trên bảng điều khiển, sau đó máy tính sẽ điền rằng những chỗ ngồi này được dành riêng cho những hành khách sẽ đến trên chuyến bay đó từ Novosibirsk.

Nếu bây giờ chúng ta nhớ có bao nhiêu hành khách bay đến và đi khỏi các sân bay Moscow mỗi ngày và thử tưởng tượng có bao nhiêu người đồng thời liên hệ với các nhà điều hành Siren ở các thành phố khác nhau, thì có lẽ chúng ta sẽ cảm nhận được “bộ não” của hệ thống đang làm một công việc to lớn như thế nào.

Máy tính làm gì trong hệ thống?

Thứ nhất, máy phải theo dõi lịch trình của tất cả các máy bay khởi hành từ Moscow và danh sách chính xác số ghế trống và có người trên các máy bay này trước ít nhất hai tuần, hay nói cách khác, máy phải lưu trữ thông tin về lịch trình và phân bổ số ghế trên máy bay.

Thứ hai, máy phải nhận từ thiết bị đầu cuối và phản hồi yêu cầu, tức là tiến hành đối thoại với một người (có thể với nhiều người cùng lúc) bằng thiết bị đầu cuối.

Thứ ba, nếu cần, cô ấy phải có khả năng gọi tên thông tin được lưu trong bộ nhớ: lưu ý rằng những chỗ trống hiện đã được đặt trước, những thay đổi đã được thực hiện đối với lịch trình - nghĩa là xử lý thông tin là một quá trình trung tâm.

Bộ xử lý là bộ não và trái tim của hệ thống máy tính: nó kiểm soát việc nhập thông tin vào bộ nhớ và đọc nó từ bộ nhớ, nó nhận yêu cầu từ các thiết bị đầu cuối và truyền thông điệp của con người với sự trợ giúp của chúng, nó thực hiện việc xử lý thông tin cần thiết được lưu trữ trong bộ nhớ và đến từ các thiết bị đầu cuối.

Trong khi thảo luận về các kỹ năng cần có của máy tính để hoạt động trong hệ thống Siren, chúng tôi không nói gì về khả năng tính toán; hầu như không cần phải tính toán - ngoại trừ việc tính giá vé giảm giá cho một học sinh hoặc số ghế trống còn lại trên máy bay.

Trong nhiều hệ thống tự động khác, rất giống với Siren, các phép tính có nhiều hơn, nhưng khó có thể đưa ra bài toán, đối với lời giải mà máy chỉ phải đếm: luôn cần phải nhớ thông tin nào (mặc dù thứ tự tính toán và kết quả trung gian), hầu như luôn cần phải chấp nhận (nhập) một số thông tin (ví dụ: dữ liệu ban đầu để tính toán) và báo cáo điều gì đó cho một người hoặc một thiết bị kỹ thuật (ví dụ: máy tính khác), đó là hiển thị thông tin.

51

Một nhóm lập trình viên trẻ bên máy in đồ họa.

Việc nhập và xuất thông tin không cần thiết khi sử dụng thiết bị đầu cuối, như trong Siren. Ví dụ, để điều khiển một chuyến bay, máy sẽ thuận tiện nhận thông tin trực tiếp từ radar sau chuyến bay. Và để thực hiện một bản vẽ hoặc bản vẽ, thật thuận tiện khi hiển thị thông tin không phải trên thiết bị đầu cuối mà trên bản vẽ của thiết bị - trình đọc biểu đồ (xem ảnh).

Do đó, các thiết bị đầu vào và đầu ra thông tin có thể khác nhau, nhưng sơ đồ chung vẫn giống nhau: mọi máy tính đều có bộ xử lý, bộ nhớ và thiết bị đầu vào và đầu ra thông tin.

Ký ức
CPU
có được một công việc nhập
bánh trứng đường
sắp xếp rút tiền
luồng thông tin
điều khiển
ĐỀ ÁN 1

Các “kỹ năng” cơ bản của máy tính sẽ không thay đổi: nhận, lưu trữ, xử lý và xuất thông tin.

Vì vậy, đối với câu hỏi “Máy tính có thể làm được những gì?” về cơ bản chúng tôi đã trả lời.

Còn người đàn ông?

Bây giờ bạn có thể hỏi: một người làm việc với máy tính và tạo ra các tác vụ cho nó—các chương trình—có thể làm được những gì?

Như đáp số chúng tôi trích dẫn từ một bài viết của một trong những tác giả “Về yếu tố con người và thẩm mỹ trong lập trình”:

“Lập trình viên phải có khả năng trừu tượng và tư duy logic của một nhà toán học hạng nhất, kết hợp với tài năng kiểu Edison trong việc xây dựng mọi thứ từ 0 đến 1. Anh ta phải kết hợp tính chính xác của một kế toán viên với cái nhìn sâu sắc của một sĩ quan tình báo, trí tưởng tượng của tác giả tiểu thuyết trinh thám với tính thực tế tỉnh táo của một nhà kinh tế. Ngoài ra, Programmict phải có khiếu làm việc nhóm, hiểu được sở thích của người dùng và hơn thế nữa.”

Đối với những người muốn làm quen với luật và phương pháp lập trình, học ngôn ngữ tương tác với máy tính - ngôn ngữ lập trình, học cách viết chương trình cho các loại máy khác nhau, Trường Lập trình Tương ứng sẽ bắt đầu hoạt động từ hôm nay. Chúng ta hãy chuyển lời.