Я получил очень интересное письмо от Далии Гибсон из Канады.
Я перевел его на русский язык и предлагаю вашему вниманию.
Dear Mr. Parondzhanov,
Примерно месяц назад я начала изучать программирование с помощью онлайн-курса, который опирается на систематический метод проектирования. Однако, даже с помощью метода проектирования, я чувствовала, что не всегда получаю тот уровень понимания, который мне нужен.
Поэтому я решила посмотреть и использовать блок-схемы, чтобы научиться визуализировать свои программы. Блок-схемы привели меня к статье о языке ДРАКОН в английской Википедии. В итоге я познакомилась с ДРАКОН-редактором Степана Митькина.
Я буквально влюбилась в ДРАКОН!
Изучая программирование, я разработала анимацию мяча, катящегося направо и налево в кадре. Познакомившись с ДРАКОНом, я составила дракон-схему программы.
Какое открытие! Дракон-схема обнажила множество тонкостей, о которых я даже не догадывалась! Она помогла мне выявить существующие и потенциальные проблемы. Указать путь, чтобы изменить структуру программы и улучшить код. Я ощутила творческий подъем, чтобы понять и реализовать сложную булеву логику алгоритмических конструкций.
Когда я первый раз попробовала написать программу и ее сложность возрастала, я чувствовала себя потерянной. Я начала действовать методом проб и ошибок, чтобы заставить программу работать.
ДРАКОН позволил мне действовать иначе. Я почувствовала, как растет мое мастерство и умение решать проблемы.
С тех пор ДРАКОН продолжает удивлять меня. Я изумлена тем, как глубоко он позволяет мне думать и понимать мои проекты.
Поэтому я хочу выразить вам глубокую благодарность за все, что вы сделали — чтобы развивать и продвигать Дракон.
Я также очень благодарна Степану Митькину, чья программа дала мне хорошее базовое понимание того, как проектировать дракон-схемы. Но у меня все еще остается много вопросов. Я хотела бы узнать намного больше.
Несколько лет назад на форуме вы сообщили о планах издать книгу (о ДРАКОНе) на английском языке. Мне бы хотелось купить эту книгу. Я готова отправить вам предоплату (например, через PayPal или прямым банковским переводом), чтобы получить любую часть вашей книги, которая уже переведена.
Кроме того, я — как носитель английского языка — могла бы помочь с изданием книги в той части, которая касается устранения неточностей перевода, то есть, обеспечить обратную связь по правильности перевода.
В связи с этим, у меня вопрос: будет ли эта книга издана на английском, как вы планировали?
На случай, если вам интересны мои успехи в изучении ДРАКОНа, я приложила дракон-схему программы о движении мяча, а также три дракон-диаграммы, созданные для визуализации рекуррентных процедур, которые я начала изучать.
В заключение информация о курсе программирования, который я осваиваю.
Курс называется «Введение в проектирование программ"
("Introduction to Systematic Program Design"). Курс учит как моделировать информацию в проблемной области, как структурировать данные программы, чтобы отразить эту информацию ... И как различать две части программы:
а) которая естественным образом управляется данными и
б) которая использует как альтернативу алгоритмический подход.
Метод использует юнит-тесты, чтобы получить более совершенную программу.
Для этого мы используем простой язык, позволяющий уяснить ядро метода проектирования. Учебный язык представляет собой подмножество языка
Racket — это язык из семейства Lisp / Scheme.
Моя программа движения мяча представляет собой интерактивную графическую программу, которая на языке Racket именуется как программа "world". Мяч катится направо и налево в кадре, и меняет направление по щелчку мыши или когда он задевает края кадра.
С сердечным приветом,
Далия Гибсон
Канада
About a month ago, I started learning programming through an online course that teaches a systematic design method. But even with the help of the design method, I often felt like I wasn't quite getting the level of understanding I wanted.
So I decided to look into using flowcharts to help me visualize my programs, which led me to the Wikipedia article about DRAKON and Stepan Mitkin's DRAKON Editor and resources.
I have fallen in love with DRAKON!
For my programming course, I had already designed an animation of a ball that rolls right and left in a frame. After learning DRAKON, I diagrammed my program. What a revelation! It revealed all kinds of intricacies I hadn't thought of, helped me identify existing and potential problems, suggested ways to restructure and improve my code, and made it a breeze to understand and implement a difficult boolean logic construct. When I first wrote the program, as its complexity grew I felt increasingly lost, and was starting to resort to trial and error to get it working. With DRAKON, I felt an increasing mastery of the problem.
Since then, DRAKON continues to amaze me with how deeply it allows me to think about and understand my projects.
So I wish to offer you my deepest thanks for all you have done to develop and promote DRAKON.
I am also very grateful to Stepan Mitkin, whose resources have given me a good basic understanding of how to design DRAKON diagrams. But I still have many questions, and I would love to learn much more.
Several years ago you posted a forum topic in which you mentioned plans to publish a book in English about DRAKON. I would very much love to buy that book. I would even be willing to send you an advance payment (e.g. via PayPal or direct bank transfer) to view any part of it that is already translated. Furthermore, I would be happy to help with the project in any way, such as providing feedback on the translation. Is the book still being planned?
In case you are interested in my progress in learning DRAKON, I have attached my diagram of my rolling ball program, and also three diagrams I created to visualize recursion procedures I am just starting to learn about.
Also, here is some information about the programming course I'm taking:
The course is called "Introduction to Systematic Program Design" . The course teaches "how to model the information in a problem domain, how to structure program data to mirror that information ... [and how] to distinguish those parts of a program that are naturally data driven, from those that should use an alternative algorithmic approach. The method uses unit-tests to both produce a better developed design, and to test your program as you develop it ... we use a simple teaching language to cover the core of the design method." The teaching language it uses is a subset of Racket, a language in the Lisp/Scheme family.
My rolling ball program is an interactive graphical program, which Racket calls a "world" program. The ball rolls right and left in a frame, and reverses direction on mouse click or when it hits the edges.
With warmest thanks,
Dahlia Gibson
Canada