Trường hè toàn Liên minh dành cho lập trình viên trẻ
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 →
50
Nghệ thuật lập trình
G. Zvenitsgorodsky,
Yu. Pervin,
A. Sosinsky
Tổng số V
học hè
lập trình viên trẻ
Từ ngày 25 tháng 7 đến ngày 10 tháng 8 năm 1980, Trường hè toàn Nga dành cho lập trình viên trẻ V được tổ chức tại Thị trấn học thuật Novosibirsk, do Chi nhánh Siberia của Viện Hàn lâm Khoa học Liên Xô, tòa soạn tạp chí «Kvant», Đại học bang Novosibirsk và Bộ Giáo dục Liên Xô tổ chức. Lần đầu tiên, việc lựa chọn sinh viên được thực hiện thông qua Trường Lập trình Tương ứng, tài liệu của trường được công bố trên các trang tạp chí của chúng tôi. Những học sinh giỏi nhất của 3SPS, cũng như những người chiến thắng trong Cuộc thi Lập trình Olympic («Kvant», 1979, số 3), đã được mời tham gia Trường hè. Bằng cách này, tất cả 145 học sinh của Trường Hè đã được chọn. Họ đến từ khắp Liên bang: từ Kaliningrad đến Sakhalin, từ Norilsk đến Tashkent; có những người đến từ các thành phố lớn và từ các vùng nông thôn. Phần lớn đây là học sinh lớp 6-9, nhưng cũng có khá ít học sinh lớp 4-5. Bài học này sẽ mô tả trường học cần thiết này như thế nào.
Làm quen
Trung tâm máy tính của Chi nhánh Siberia của Viện Hàn lâm Khoa học Liên Xô. Một trong những phòng cuối. Màn hình của ba màn hình nhấp nháy; trong sự im lặng tập trung, người ta có thể nghe thấy tiếng vo ve của một chiếc quạt và tiếng gõ phím nhẹ nhàng trên các thiết bị đầu cuối. Phía sau thiết bị đầu cuối đầu tiên, một cô gái tóc đen, da ngăm đen đang “nói chuyện” với chiếc máy tính BESM-6:
CHƯƠNG TRÌNH GHI
BẮT ĐẦU CÔNG VIỆC
TÊN CỦA BẠN?
nhấp nháy trên màn hình. Cô gái ngập ngừng gõ đáp số trên bàn phím:
— ABDRAKHMANOVA GULYA
ĐỊA CHỈ CỦA BẠN?
— KAZAKHSTAN, VÙNG AKTOBE, LÀNG. KURAILI
BẠN BIẾT NGÔN NGỮ LẬP TRÌNH NÀO?
Cuộc trò chuyện giờ đây diễn ra suôn sẻ hơn, nhanh hơn và không chỉ từ Gulya: các phím trên hai thiết bị đầu cuối còn lại đang gõ rất to. Công việc của họ được giám sát bởi nhà tư vấn, lập trình viên giàu kinh nghiệm Sergei Gavrilenko; anh ấy trả lời các câu hỏi và sửa lỗi.
Đối với Gulya, đây là lần gặp mặt trực tiếp đầu tiên của cô với máy tính; với phần mềm
52
Hóa ra là có thể nói với Pozny rất ngắn gọn về các ngôn ngữ và hệ thống lập trình mới: chỉ cần lưu ý những điểm khác biệt so với những ngôn ngữ đã biết từ «Kvant» Rapier và Epee là đủ.
Ở đâu đó giữa hướng học tập và giải trí thú vị, có một nơi dành cho những bài giảng giải quyết vấn đề. Đây là tên được đặt cho các cuộc họp giữa những người tham gia Trường và các nhà khoa học từ Chi nhánh Siberia của Viện Hàn lâm Khoa học Liên Xô. Nhà nghiên cứu tại chi nhánh Novosibirsk của Viện Cơ học Chính xác và Khoa học Máy tính thuộc Viện Hàn lâm Khoa học Liên Xô, Tiến sĩ. V. A. Evstignev đã kể một cách thú vị về việc khoa học ứng dụng - lập trình - được làm phong phú như thế nào nhờ một môn toán học thuần túy như lý thuyết đồ thị. Trưởng nhóm nghiên cứu của Trung tâm Máy tính thuộc Chi nhánh Siberia của Viện Hàn lâm Khoa học Liên Xô, A. A. Bers, đã thuyết trình về triển vọng sử dụng máy tính trong in ấn. Phòng thí nghiệm trưởng hỗ trợ toán học của trung tâm máy tính sử dụng chung Ph.D. L. B. Efros đã liệt kê các hướng làm việc chính của các chương trình hệ thống của Trung tâm Máy tính thuộc Chi nhánh Siberia của Viện Hàn lâm Khoa học Liên Xô.
Người lớn - những nhà giáo dục và trưởng đoàn, phụ huynh - cũng không đứng ngoài quá trình giáo dục của Trường hè. Chuỗi bài giảng dành cho họ về các vấn đề trong chương trình học ở trường đã gây ra một cuộc thảo luận sôi nổi trong khán giả. Về cuộc tranh chấp do giám đốc Trường hè, Yu. A. Pervin, chúng tôi lớn lên với chủ đề “Tại sao trẻ em được dạy lập trình?” chúng tôi sẽ viết nhiều hơn trong số tiếp theo.
Hội thảo khoa học dành cho học sinh
Xin vui lòng, sự kiện thú vị nhất của Trường hè là các hội nghị diễn ra vào ngày 28 tháng 7 và ngày 8 tháng 8. Đầu tiên, các sinh viên chương trình trẻ nói về công việc đã thực hiện trong năm học, lần thứ hai - trực tiếp tại Trường hè.
Các báo cáo của hội nghị đầu tiên được chia thành năm phần: lập trình hệ thống, mô hình hóa và tối ưu hóa trên máy tính, việc sử dụng máy tính trong quá trình giáo dục và xử lý dữ liệu bài toán ứng dụng, kiểm soát quy trình, các chương trình chơi game và thể thao. Cuộc họp của từng bộ phận được điều hành bởi một nhà khoa học hoặc chuyên gia am hiểu đặc thù sử dụng máy tính theo đánh giá của lĩnh vực: máy chiếu của Đại học bang Novosibirsk, Tiến sĩ Khoa học Kỹ thuật, GS. N. G. Zagoriyko, nhà nghiên cứu cấp cao Viện nghiên cứu máy tính (Minsk) M. V. Khodosh, nhà nghiên cứu cấp cao Trung tâm máy tính chi nhánh Siberia của Viện Hàn lâm Khoa học V. E. Malyshkin, nhân viên của Viện Thiết bị Hàng không Leningrad N. N. Brovin, thành viên Viện nghiên cứu cấp cao của Viện Hàn lâm Khoa học SSR Ukraina L. N. Ivaenko.
Lập trình viên Word cho hệ thống
Theo ý kiến chung, phần đầu tiên (lập trình hệ thống) tỏ ra mạnh nhất: 3/5 báo cáo trong phần này đã được cấp bằng cấp một.
Học sinh lớp 9 Vitaly Tsikoza (Novosibirsk, bằng cấp một) nói về phiên bản mới của hệ thống đồ họa Shpa do cậu phát triển, được gọi là Shpa-5. Các học sinh Trường hè thực sự thích quy trình DUGAT có trong Speech-5, cho phép các em vẽ một cung tròn đi qua ba điểm cho trước: giờ đây không cần phải mày mò một bán kính và hướng nhất định của cung tròn. Trong báo cáo của mình, Vitaly đã nói về chương trình
HỆ THỐNG HÌNH ẢNH <<SPAGA-5>>
phiên bản thử nghiệm RASSAL-Montir
Hình 1.
53
các tính năng khung của hệ thống NU POGODI, mà tất cả những người tham gia trước đây đã từng làm việc trong thực hành thiết bị đầu cuối (Hình 1).
Học sinh lớp 10 Mikhail Epiketov (Alma-Ata, bằng cấp 1) đã phát triển hệ thống SONAR để gỡ lỗi chương trình trên máy tính EC. Để tăng tốc độ gỡ lỗi, nhiều ngôn ngữ và hệ thống lập trình (ví dụ: OS EC, ALGOL - BURROWS) cung cấp khả năng giám sát ý nghĩa của các tên khác nhau, lệnh gọi thủ tục, v.v., nhưng trong hệ điều hành DOS EC, lập trình viên phải tự tổ chức gỡ lỗi. Để làm được điều này, bạn có thể đặt câu lệnh in sau mỗi lần gán trong chương trình và sử dụng bản in ra để xem cách sử dụng chương trình, nhưng kích thước của chương trình khi đó sẽ tăng gấp đôi và khi bạn đưa ra câu lệnh in bổ sung, các lỗi mới thường được “đưa vào” trong chương trình. Hệ thống SONAR cho phép lập trình viên, với sự trợ giúp của một hoặc hai người vận hành, tổ chức việc in gỡ lỗi cho toàn bộ chương trình hoặc các phần được chỉ định của chương trình và cũng chỉ cần “tắt” tính năng in này sau khi gỡ lỗi xong.
Sinh viên chín lớp Serey Kotov (Novosibirsk, bằng tốt nghiệp cấp 1), theo yêu cầu của Phòng thí nghiệm Thông tin Thực nghiệm của Trung tâm Máy tính thuộc Chi nhánh Siberia của Viện Hàn lâm Khoa học, đã phát triển một bộ công cụ để phân tích chương trình của bộ vi xử lý INTEL-8080. Bộ vi xử lý rất được ưa chuộng
Đổ chuông OVS
OBC tuyến tính
OBC trung tâm
OBC hình ngôi sao
Hình 2.
Các máy số được xây dựng trên các mạch điện lớn bên trong đã trở nên phổ biến ở nhiều lĩnh vực khác nhau trong những năm gần đây. Bộ vi xử lý điều khiển bộ máy nghiên cứu của tàu vũ trụ và các nhà máy cán lớn nhất, xác định độ phơi sáng trong quá trình chụp ảnh, điều chỉnh hoạt động của động cơ tự động và máy tính bỏ túi. Tất nhiên, chất lượng công việc của họ phụ thuộc vào việc quản lý chương trình immi. Thông thường cần phải hiểu một chương trình như vậy, hiểu thuật toán cơ bản và có thể thực hiện những thay đổi cần thiết. Nhưng việc hiểu một chương trình lạ được viết bằng lệnh máy không hề dễ dàng chút nào: để làm được điều này, bạn cần thay thế các lệnh bằng các ký hiệu không phải monic của chúng, vận hành bằng các nhận xét, tách lệnh khỏi dữ liệu, chia chương trình thành các khối riêng biệt và phát triển kết nối giữa chúng, v.v. Tất cả công việc này được thực hiện bởi bộ công cụ do Sergey tạo ra.
Bằng cấp II và cấp III được trao cho báo cáo của Mikhail Simbirskoe (Kharkov, lớp 9) về cách làm việc với các số có độ dài không chuẩn và Svetlanna Uropina (Novosibirsk, lớp 5) về chương trình phân tích từ vựng của văn bản bằng nhiều ngôn ngữ lập trình khác nhau.
Chương trình mô phỏng và hỗ trợ trong sản xuất
Ở phần thứ hai, Olga Khoroshevskaya (Novosibirsk, lớp 9) nhận bằng tốt nghiệp cấp một, người đã nói về việc tối ưu hóa cấu trúc của mạng máy tính kết nối một số trung tâm máy tính. Sau khi xây dựng mô hình chi tiết hoạt động mạng bằng ngôn ngữ ALGOL-GDR và áp dụng thành công tối ưu hóa ngẫu nhiên (phương pháp Page), Olya đã chỉ ra rằng trong số các phương án tổ chức liên lạc giữa các trung tâm máy tính, nổi bật nhất là cấu trúc vòng. Theo đánh giá chung, báo cáo của Olin là tốt nhất về mặt sử dụng và chi phí chung (được thực hiện bởi máy tính trên Sword - xem Hình 2).
54
Báo cáo của Serdeya Gavrilenko (Novosibirsk, lớp 5), được cấp bằng tốt nghiệp cấp II, đã gây ra sự quan tâm lớn đến phần thứ ba. Chương trình “Câu hỏi - đáp số” của Serezhin cho phép bạn hát dữ liệu được ghi theo một cách nhất định từ bất kỳ lĩnh vực chủ đề nào vào máy, sau đó hỏi máy tính về dữ liệu này và nhận, như người nói đã nói, “đáp số theo mức độ ý nghĩa.”
Bằng tốt nghiệp cấp 1 trong phần thứ tư được trao cho các đồng tác giả Mikhail Dun và Andrey Kadal (Kharkov, lớp 9) cho hai báo cáo: “Mô hình hóa quy trình công nghệ sản xuất các sản phẩm từ polyme nhiệt rắn” và “Tự động hóa thiết kế và chế tạo cơ cấu cam lăn trung tâm”. Những công trình này đã được triển khai sản xuất: chúng đã được trao giải thưởng đặc biệt là những phát triển có ý nghĩa thiết thực nhất.
Vẫn còn rất nhiều công việc thú vị. Chúng tôi sẽ chỉ ghi nhận các báo cáo của Pavel Zemtsov (Novosibirsk, lớp 6), người đã mô tả công việc của xưởng sản xuất bằng ngôn ngữ “Simulya - I”, Igor Mezentsev (Angarsk, lớp 9) trên hệ thống đăng ký “Trueer”, Nikolai Verba (Kharkov, lớp 6), người đã tìm thấy tất cả 92 lời giải trên máy tính “bài toán khoảng 8 nữ hoàng” (xem «Kvant», 1977, số 12, trang 22), Victoria Volkova (Novosibirsk, lớp 5) về việc áp dụng phương pháp Euler vào lời giải phương trình chuyển động của máy bay và cuối cùng, quen thuộc với độc giả của chúng tôi (với tư cách là nhà phát triển Speech-I) Asia Salikhova, người đã nói về công việc đầy hứa hẹn về mô hình hóa các bước đi ngẫu nhiên trên một tinh thể lưới.
Chúng ta đã học được gì
Tại hội nghị đầu tiên, báo cáo của học sinh từ Novosibirsk và Kharkov, nơi các lập trình viên trường học của họ đã làm việc từ lâu, nổi bật ở mức cao. Và mặc dù có những tác phẩm thú vị từ Estonia (Newsskaya S.H.), Angarsk, Almaty, Moscow, Tuymazy, Kuibyshev, phần lớn sinh viên
ZShP - trước Trường hè không có cơ hội để làm việc chung với máy tính như vậy.
Một bức tranh khác đã được quan sát tại hội nghị cuối cùng. Ở đây mọi người đều bình đẳng. Mỗi nhóm được dành phần lớn thời gian cuối cùng để khởi chạy và gỡ lỗi chương trình theo chủ đề đã chọn. Việc phát triển và gỡ lỗi các chương trình này được coi là một trong những nhiệm vụ thử nghiệm và các tác phẩm thú vị nhất đã được trình bày tại hội nghị cuối cùng.
Lãnh đạo các đại biểu (giáo viên và chuyên gia ứng dụng máy tính) đã rất ngạc nhiên trước những chương trình thú vị và phức tạp mà các học sinh lần đầu tiên sử dụng máy tính có thể tạo và gỡ lỗi trong hai tuần. Không thể kể hết những tác phẩm thú vị, chúng tôi sẽ chỉ kể tên một vài tác phẩm trong số đó.
Ba đội đã nhận được Bằng tốt nghiệp cấp 1 cho tác phẩm “Examiner’s Ultimate in Chemistry” (diễn giả - M. Epiktegov), “School Journal” (diễn giả - S. Brodetskaya) và “Nhiệm vụ về phản ứng oxy hóa” (diễn giả - E. Kornilin). Trong số những tác phẩm thú vị đã nhận được bằng cấp II, chúng tôi lưu ý ba tác phẩm sau: “Người nội trợ robot” (N. Navarova), “Người giải mã” (E. Zabokritsky), “Thẩm phán cờ vua” (L. Nekhamkin).
Theo đánh giá chung của các học viên, khách mời và lãnh đạo Trường hè V thì đó chắc chắn là một trải nghiệm tuyệt vời. Ở đây, chúng tôi vui mừng lưu ý rằng, ngoài điều kiện tuyệt vời, kinh nghiệm tổ chức và khách sạn truyền thống của Akademgorodok, điều này còn được tạo điều kiện thuận lợi bởi trình độ học sinh khá mạnh và cao đạt được trong các lớp lập trình trường tương ứng của tạp chí của chúng tôi.
55
Người chiến thắng Olympic lập trình
Bằng cấp đầu tiên
Batalov S. (Arzamas, s.sh. Số 2, lớp 8).
Weizman B. (Odessa, ssh. Số 53, lớp 8).
Zabokritsky E. (Leningrad, trường số 536, lớp 7).
Zemtsov P. (Novosibirsk, s.sh. Số 25, lớp 5).
Kuprikov Yu. (Podolsk, khu vực Moscow, trường nông thôn số 3, lớp 7).
Liepina Ya. (làng Vangazhi, SSR của Latvia, sh. phía bắc, lớp 8).
Robsman D. (Moscow, s.sh. Số 91, lớp 9).
Tsikoza V. (Novosibirsk, s.sh. Số 130, lớp 8).
Danh sách độc giả đã gửi đúng lời giải bài toán từ Sách Vấn Đề “Kvaンタ”
(Xem phần đầu ở trang 44)
(Làng Chernogolovka, vùng Moscow) 8-12; A. Osipov (Sosnovy Bor, vùng Leningrad) 8, 11, 12, 17; I. Osovyak (làng V. Dederkaly, vùng Terpopol) 6; Yu. Pavlov (Leningrad) 16; A. Pakal (Tukums) 16, 17; O. Panatsenko (Kyiv) 4, 6-12; A. Panteleev (Rostov-on-Don) 9, 11, 12; S. Patsenko (Kyiv) 16, 17; V. Pentezov (Kyiv) 6, 11, 16, 17; G. Perelman (Leningrad) 6; K. Pivnitskaya (Moscow) 4; S. Podorelov (Kyiv) 11, 12; A. Polissky (Kyiv) 4, 6, 11, 12, 17; E. Polykov (Kalinerrad, vùng Moscow) 9, 12; A. Ponomarenko (Kyiv) 8, 9, 11, 12, 17; O. Potyltsina (Zhukovsky) 11, 12; S. Ravnyago (Zolochiv, vùng Lviv) 9; V. Romanchuk (Zaporozhye) 17; S. Romashkin (Alexandrov) 17; B. Rublev (Kyiv) 4, 6—9, 11, 12; G. Rybkin (Smolensk) 4, 6, 7; S. Ryazantseva (Borisoglesk) 7, 9, 11, 12, 17; B. Safronov (Donetsk) 17; Yu. Svistunov (Zaporozhye) 16, 17; S. Selifanov (S. Polelevo, vùng Kaluga) 9-12; T. Sertetsev (Chelyabinsk) 4, 6-12; A. Sereda (Donetsk) 4; V. Sereda (Lviv) 6, 7, 9, 11, 12, 16, 17; F. Serx (Orhei) 11, 12; A. Sidorenkov (Smolensk) 4; V. Sidorin (Retov) 7; N. Sirykh (Yaroslavl) 6-8; A. Sok (Talgar) 4, 6—9, 12, 16, 17; O. Skontsov (Angarsk) 4, 8, 12, 16; A. Smirnov (Kurgan) 9, 11, 12; N. Smirnov (Moscow) 8, 9, 11, 12, 16; R. Smirnov (Moscow) 4, 6; S. Smirnov (Tashkent) 7-9, 11, 12; A. Sokol (làng Chernogolovka, vùng Moscow) 17; G. Soldak (Minsk) 4, 6; S. Solomko (Melouez) 17; I. Solovey (Donetsk) 16; D. Soroka (Zaporozhye) 4, 6—9, 12; A. Spivak (Sterlitamak) 7, 12; I. Stavitsky (Frunze) 6, 8, 9, 17; P. Stradi (Riga) 4, 17; A. Streshinsky (Donetsk) 6—9, 11, 12; D. Styrkas (làng Chernogolovka, vùng Moscow) 9, 11, 12; E. Syritseva (Vyshny Volochek) 16, 17; Yu. Taldenko (Sumy) 16, 17; A. Ulivanov (Gorky) 11, 12, 16, 17; V. Troitsky (Kyiv) 9, 11, 12; L. Utkin (Vologda) 4, 9, 11, 12; V. Farber (Baku) 6, 9, 11, 12; N. Fedin (Omsk) 4, 6—9, 11, 12, 16, 17; A. Fedorov (làng Spolytsy YASSR) 17; V. Fedokovich (Kyiv) 8, 9, 11, 12, 16, 17; A. Fetiskin (Ryazan) 7; A. Flerov (Riga) 4, 6, 7, 9, 17; I. Fomenko (Dnepropetrovsk) 4, 7, 9, 10, 12; O. Fonarev (Sumgant) 6; A. Frolov (Tula) 8, 9, 11, 12; A. Khartsenko (Kyiv) 16, 17; S. Khosid (Almaty) 4, 6, 7, 17; L. Khrizman (Kyiv) 4, 9, 11, 12; A. Tsekhansky (làng Zaprudnya, vùng Moscow) 16; M. Tsolik (Orsk) 6, 7, 9, 12; Yu. Tsykankov (quận Drozhzhanovsky của TASSR) 4, 6—10, 12, 17; A. Chepurov (ga Grigoropolisskaya, vùng Stavropol) 4; A. Chulkov (khu định cư Muchkapsky, vùng Tambov) 17; A. Chumadin (Baku) 6-9, 11, 12; A. Chumkov (Kuibyshev) 8, 11; V. Shablinsky (Kyiv) 4, 6, 7; Y. Shapiro (Voroshilovgrad) 17; V. Shapoval (Vinnitsa) 7; S. Shary (Semipalatinsk) 8, 12; MỘT. Shevchenko (Artemovsk, vùng Donetsk) 12, 17; M. Shevchenko (Artemovsk, vùng Donetsk) 17; A. Shershenev (Moscow) 4; S. Shitov (Penza) 17; I. Shkradok (Noginsk) 4, 6-9; S. Shlakov (Saratov) 7, 9, 12, 17; A. Shuchkin (Dushanbe) 7-9, 11, 12, 16, 17; M. Eskerov (Makhachkala) 7; K. Ykovlev (Kyiv) 16; S. Yakush (Krasnodar) 17.