Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Полиполиглотность

Я что-то задумался над обилием языков, которые неплохо бы знать образованному человеку. На сегодня можно выделить несколько классов таких языков:
-- естественные (английский, русский, немецкий, японский и т.д.)
-- схемные/структурные (радиосхемы, P&ID, SysML, Modelica, AADL, ArchiMate)
-- программистские (математическая нотация, C++, Python, Java, SQL, SPARQL, Haskell)

Полиглот знает несколько языков одного класса, а если речь идёт о нескольких классах полиглотства, то я назову это полиполиглотностью.

Несмотря на всю их разницу (наличие или отсутствие под ними каких-то предметных областей, формализмов и т.д.), это всё языки. Задача: получить полиполиглота. При этом есть обширные исследования по обучению естественным языкам, кое-какие исследования по обучению программистским языкам и практически ноль по обучению схемным языкам. На примере исследований по обучению естественным языкам показывается, что в этой области мифов более чем хватает, а учителя-практики серьезно расходятся с исследователями в своих оценках (вот, например: http://www.govtilr.org/Publications/TESOL03ReadingFull.htm).

Но значительная часть оценок совпадает: главный критерий -- это время, потраченное на занятие языком. Это примерно год на язык "с нуля до мастерства" (по ссылке выше приводят с английского на испанский 600 аудиторных часов, на русский 1100 часов, на японский 2200 часов. Плюс ещё примерно треть от аудиторного времени на домашнюю работу. Сравнение: магистерская программа обычно 1800 аудиторных часов плюс столько же домашняя работа. Для языков программирования примерно то же самое -- три дня на первый hello world! и год плюс минус вчетверо от этого на овладение в совершенстве. C, Python, Haskell в этом плане отличаться в плане освоения будут не меньше, чем испанский, русский и японский для англоговорящих. Haskell не трудный язык, как и японский. В японии даже кухарки свободно говорят на японском. Но кто из пишущих на Си готов потратить вчетверо больше времени для его совершенного освоения? То есть четыре года вместо года для Си? Для схемных языков то же самое, плюс сюда нужно добавить и изучение предметной области схемного языка: если не знаешь, что записывать, то никакое знание иероглифов и правил из сочетания не поможет).

Можно ли учить несколько языков сразу, или их всех нужно учить последовательно? Похоже, что последовательное изучение до уровня advanced помогает каждый следующий язык учить быстрее (материал по предыдущей ссылке). До уровня advanced никакой помощи от одного языка другому не наблюдается. Как это относится к схемным языкам и языкам программирования? Не знаю.

Как учить языки? Методы изучения естественных языков (типа shadowing -- http://learnanylanguage.wikia.com/wiki/Shadowing, повторение синхронно за диктором) для программистских языков не работают. Программистские методы (упражнения с автоматическим контролем типа курса алгоритмики на Python http://informatics.mccme.ru/course/view.php?id=156) не работают для схемных языков -- хотя при соединении схемных языков и языков запросов, может, и удастся сформулировать что-то похожее на такие последовательности упражнений.

А дальше -- ужас. Как и в естественных языках совершенное им владение Людоедкой Эллочкой представляется излишним в силу того, что нечего сказать и нет нужды узнать из наработанного другими, так и в схемных и языках программирования то же самое: знание языка не заменяет знания предмета. Если вы нарисовали задвижку и теплообменник на принципиальной схеме, то это "умение высказать на схемном языке" ничего не скажет о том, будет ли гидравлический удар, и что нужно изменить в высказывании на схемном языке, чтобы гидравлического удара не было.

Этот пост можно воспринимать по-разному -- от прикидок "что лучше, потратить время на изучение испанского или Хаскеля?" до прикидок к обсуждению достоинств от перехода к одному SysMoLan по сравнению с парой Modelica и SysML (две части SysMoLan выучить будет быстрее, чем два разных языка -- типа как испанский к английскому вместо японского к английскому: все подъязыки SysMoLan должны по определению быть "одной природы"). Ну, или попыток ставить правильные оценки сроков перехода к моделеориентированной системной инженерии в консалтинговых проектах и попыток впихнуть невпихуемое в соответствующие учебные курсы. Так, в 32 аудиторных часа "Практик моделеориентированной системной инженерии" сколько можно воткнуть языков? То-то же.

Но жизнь полиполиглотов ценит. Никуда не деться, учиться языкам нужно до самой старости -- естественным, схемным, программирования. Интересно только, откуда на это брать время.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 22 comments