Anatoly Levenchuk (ailev) wrote in dot15926,
Anatoly Levenchuk
ailev
dot15926

Category:

Питонное

Потратил некоторое количество времени на разбирательство с экосистемой интерактивного компьютинга (exploratory computing, обычно под этим имеют ввиду emphasizing programming and scripting languages over point-and-click interfaces для разбирательства с какими-нибудь сверхкучерявыми данными) на Питоне. Тут нужно особо заметить, что я:
-- считаю, что с ростом сложности и объема программы никакая графика (гхм... никакие блок-схемы) не справляются, и нужны текстовые языки.
-- разделяю мысль Алана Кея, что "приложения должны верстаться", и верстать приложения для себя должны предметные эксперты. То бишь концепция диалога человека и программы, с возможностью записи кусков этого диалога в Notebook, как в Mathematica, или workspace, как в Smalltalk должна присутствовать.

Онтологическое программирование, в котором разбирательство с уже имеющимися справочными данными происходит 95% времени, и только 5% времени уходит на попытки сказать своё веское онтологическое слово, относится именно к exploratory computing. Поэтому нам в .15926 нужно будет разобраться, что уже готового в этой области есть на Питоне, чтобы не изобретать собственного велосипеда.

Прежде всего нужно указать на инструментарий IPython -- http://ipython.org/ipython-doc/stable/overview.html. Этот инструментарий даёт питоновскую оболочку (shell) повышенной интерактивности, включая Notebooks как в математических пакетах типа Mathematica, плюс диалоговое параллельное программирование.

Этот инструментарий лёг в основу огромного числа немаленьких программ, из которых нужно выделить:
-- Sage (http://sagemath.org/): что-то типа помеси Mathematica и Matlab, но вместо "особого языка" используется Питон.
-- JModelica (http://www.jmodelica.org/): акаузальное программирование на языке Modelica, но скриптование делается на Питоне, невзирая на то, что J в названии -- от Java.
-- NotebookCloud (https://notebookcloud.appspot.com/docs): поддержка Ipython notebooks в "облачных сервисах", чтобы научные вычисления были доступны изначально.
-- Pitz (http://pitz.tplus1.com/main-idea.html) распределённый issue tracker , который может работать с распределёнными системами контроля версий.
-- множество разработок для поддержки работ в тех или иных научных лабораториях, а также скриптования веб-инструментария (http://wiki.ipython.org/Projects_using_IPython).

Интересна и похожая на exploratory computing с её не мышиным, а скриптовым интерфейсом попытка разработать на Питоне "неграфическиинтерфейсный" 3D CAD, который нацелен не столько на "редактирование WYSIWYG", а именно на generative design (http://www.pythonocc.org/about/, хотя жизнь там и остановилась пару лет назад -- грант какой-нибудь кончился?):
  • pythonOCC is not a CAD software as usually understood: excellent products are available on the market, whether they are proprietary/commercial (e.g. Catia V5™, SolidWorks™, SolidEdge™ etc.) or free and open source/commercial software as FreeCad for instance. Unlike these products, pythonOCC does not provide any advanced Graphical User Interface (GUI): development team focuses on adding value for engineers or architects, with high expectations, rather than spending time on GUI polishments.
  • pythonOCC is not a low level C++ API intended to C/C++ software developers. The python programming language offers a radically more efficient way to design complex shapes/products.

As a consequence, pythonOCC is an intermediate layer between these two levels, and adresses both users (end-user engineers/designers, software developers). ... pythonOCC is a 3D CAD/CAE/PLM development framework for the Python programming language. It provides features such as advanced topological and geometrical operations, data exchange (STEP, IGES, STL import/export), 2D and 3D meshing, rigid body simulation, parametric modeling.

Итого: конечно, никакого крупнопанельного (типа как в OpenERP) массового строительства инженерных приложений в питоновской экосистеме пока не наблюдается. Но ежели нужно выпустить промышленного качества инжtythysq инструментарий, который был бы не хуже всяких там TopBraid в части семантической работы, то на Питоне это может оказаться круче и быстрее, чем могут ожидать недремлющие конкуренты. Ибо "каждая программа содержит в себе полноценный язык программирования, например, Питон", "каждая программа содержит в себе полноценную систему вёрстки с исполняемым кодом, мультимедийными фрагментами и текстом, то бишь Notebook", и так далее. Похоже, на Питоне это вполне решаемые вопросы, даже не выходя за рамки свободного софта.

То есть самое первое, что приходит в голову -- это выпустить версию .15926 Editor на IPython, поддержать reference data exploration, а заодно синтегрироваться с Pitz (т.е. сделать что-то типа PLM для reference data, предложив вместо всех этих SPARQL нормальную работу с файлами), заодно подверстав pythonOCC, чтобы 3D иметь "из коробки". Ну, и уйти в параллельный компьютинг, чтобы решить раз и навсегда все проблемы с производительностью. Это, конечно, мечты. Но эти мечты, похоже, сегодня становятся стандартным решением для любого exploratory computing, будь то численные данные, или дискретные онтологические (хотя 3D и P&ID заставляют сомневаться, что все эти данные такие уж нечисленные -- скорее уж нужна система, в которой поддерживается и одно, и другое, иначе трудно будет отлаживаться).
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment