Sergey Dmitriev's Weblog


Subscribe to "Sergey Dmitriev's Weblog" in Radio UserLand.

Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.

27 June 2003

Mathematical knowledgebase (continuation)

One feature for such knowledgebase could be very useful: One can formulate some statement or hypothesis and the system should find if this statement has already been proven (and point to the proof then). Even if it there isn't any proof of this statement in the knowledgebase it could still try to find all proven theorems with stronger conditions or weaker conclusions. Such system should also have the information if somebody else had tried to prove this theorem and, even if he failed, how much effort did he devoted to the problem.
On the other side, even if a proof was found, it could try to find more general variants of the theorem (with weaker conditions or stronger conclusions).

7:32:05 PM    comment []

22 June 2003

Blogging again (Mathematical knowledgebase)

Hi all, I have started blogging again. This time, I hope, it will be more successful. Blogs serve for self-expressing and sharing ideas and interesting information. I'm not sure that all information about me is very interesting but at least it is some kind of self-expression.

Actually it was always very difficult for me to write any texts (except probably Java programs). But the only way to learn things is to do them.

Today is my first day after returning back to Prague from my US trip. Strange, I don't feel any jetlag, this is the first time after last 8 over-ocean flights. During this trip I visited San Francisco (JavaOne) and Boston. I've started a new branch of JetBrains in Boston area, and we already have one programmer there - Dmitry Skavish (He is the author of JGenerator - )

Mathematical knowledgebase

I always was dreaming about thing like that. Contemporary mathematics is a huge area of knowledge, it takes years to come to the modern research edge even in one particular field. And the only way to do it now is reading books and articles. Unfortunately the way, how information is presented in such printed forms, is absolutely inconvenient for getting overall picture. Text is linear thing, but mathematics itself - is absolutely not. When learning some new math notion I always want to know immediately, where this notion is used, what are particular examples of such notion, why it was introduced and so on. Usually math monographs and articles don't answer these questions (only good one clarify part of it). Or - they answer, but in hundreds of pages forehand. Mathematical knowledge is actually some graph, so it should be represented as a graph.

I've found some resources on internet, devoted to this problem:

Wolfram ScienceWorld Mathematical notions and facts are represented here as ordinary web pages with hyperlinks. It covers only a very small part of Math knowledge.

QED Project - It has very similar goals, as I explained here, but unfortunately it is just a proclamation and nothing has been changed there since 1996

MIZAR Project - Very interesting project. They have invented some language, that allows introducing notions and describing proofs absolutely formally and at the same time this text is human-readable. They have very large knowledgebase, covering good part of Mathematics. It has also program that verifies proofs. Unfortunately there is no UI application for browsing/editing this knowledgebase.
The project was started in 1973!

The MBASE Mathematical KnowledgeBase - The web based mathematical knowledgebase, I will look closer at it.

HELM - An Hypertextual Electronic Library of Mathematics

Publications on Representation of Mathematical Knowledge

10:42:12 PM    comment []

09 March 2003

What is bad about OOP

As I have been developing more and more programs, it is becoming increasingly clear that it takes far too many words to "explain" simple things to computer. Very often, it is very simple to explain a task to a developer, but that same task can take the developer several months to "explain" it to a computer.

Imagine the following task:

"Write a graphic editor that allows users to draw a picture, consisting of geometrical shapes. It should be possible to select some geometrical shape from a palette (rectangle, circle or line) and then draw it by using a mouse. In addition, it should also be possible to select these shapes in the editor, move selected shapes, change their size, and delete them. It should be possible to save the resulting picture to a file and to read the saved graphic from a selected file."

This explanation to a programmer can take about 20 minutes maximum, considering their additional questions about exact specifications. After this, it will take about 1-5 days to write the program and to fix all the bugs. In any case, the program source code will be much longer than this short and simple paragraph description as above.

Moreover, an in-depth knowledge of some libraries (input-output, graphic library, UI library) will be required from the developer. The developer should also be concerned about a good program design, i.e. by creating a base interface that will be implemented by all classes related to geometrical shapes. Such a design is required to have the possibility to easily add new shape classes in future.

Why is it that we cannot explain this task directly to a computer, and must instead, explain it to a developer?

The matter of the fact is that any OO language (like Java, C++, etc) is not brief at all. It has very few language notions that can be used to express a program - class, method, expression, if, for, etc. This means that because it possesses such a limited vocabulary, it is therefore required to explain everything to a computer in detail.

One can object to this by pointing out that OO languages allow one to create new classes and methods that can express new notions. But the fact still remains, that all classes and methods look the same to the computer. Their names and comments make sense only to their human manipulators. What all of this means, is that a computer can only help a developer on the language level (i.e. like IntelliJ IDEA currently does). However, a computer is of limited help when domain knowledge is needed. For example, a computer has no clue that a given method is an implementation of a remote access method for a given session bean in an EJB because this fact is not reflected by any language construct.

In the article by Czarnecki, etc : "domain specific knowledge may get lost in the implementation because there exists a semantic gap between domain-specific abstractions and features offered by programming language"

Most of all these "OOP design patterns" are needed only to cover this "Gap".

To be continued...

7:53:35 PM    comment []

25 October 2002

The list of the topics that I am interested in and want to start discussing:

- The next programming paradigm (generative, intentional, aspect-oriented, notional and so on programming, intelligent tools support)

Online Community: Internet as the media for new types of community, and online communities as the new creative, economical, science and cultural force.

- Global Science Knowledgebase (for mathematics, physics, etc) and Internet as its base.

- The mystery of life and consciousness

- The mystery of modern physics (quantum theory)


5:48:19 PM    comment []

21 October 2002

Ok, I've started my own weblog here.
Let's see is it really a good way to share thoughts and ideas with others.


2:14:25 AM    comment []

Click here to visit the Radio UserLand website. © Copyright 2003 Sergey Dmitriev.
Last update: 30/06/2003; 4:56:09 PM.
June 2003
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
Mar   Jul