A Discussion on the new software programming language and architecture

Source: Internet
Author: User
Program Architecture and software and application architecture

Recently, I have been paying attention to zhang3's research on new programming languages in Douban [1] and some related discussions. Here is a place that fits with my key domain model and modeling and architecture, that is, the software program architecture or simply known as the programming architecture ). This is an uncommon term. Compared with common software (system) architectures and application architectures, it is simpler and narrower. In this scope, we are mainly concerned with the Organization Framework and Design Principles of the Program (programs), and relatively ignore things at a higher level, such as components, modules, servers, configuration and deployment. From another perspective, this topic correspondsProgramming LanguageThe structure and design are closely linked.

In fact, the mainstream program architecture is "object-oriented" (OO ). I always think that OO should have been an architectural style with specific applicability. However, in the software development field in recent decades, OO has been pushed to a general software architecture, which is almost the highest position. It is even considered as the basis for general problem analysis and modeling, or even "Philosophy ". For example, in the MDE/MDA field. Zhang3, like me, belongs to "disagree ". He has an in-depth analysis of this topic [2]. One of his development plan goals is to open up more rational and powerful programming technology spaces outside of OO: Non-oo methodologies and programming systems (programming languages and integrated development environment IDE ).

The more typical program architecture is Niklaus Wirth's "program = Data Structure +Algorithm"(Algorithms + data structures = programs ). Recently, with some advances in general model theory, I was surprised to find that this formula, which was considered obsolete in the OO age, just reveals the fundamental structure of software programs, it should be the same. Oo is also built on it; non-OO programming architecture must also be built on it. However, this is definitely not to go back to the 3gl era. It is necessary to use new models and modeling theories to reveal more clearly the theoretical basis and role methods and establish new understanding and application principles.

This corresponds to the palest part of the existing software theory: On the Turing machine, there are other important things besides "Data Structure + algorithm" (or "relational model, either theoretically or technically. This layer is also the key to determining the computer's transformation from sequence calculation (Turing Machine) to information (meaning of data) processing machine-computer. Oo is currently recognized as the main solution, but in fact it is intuitive, lack of theoretical basis; and other application implementation? Almost all are more casual and purely empirical structures.

We can clearly see that the mainstream of international software engineering in the past two decades has also focused on modeling and modeling, but unfortunately, at the same time, the mainstream put modeling and OO into equal signs, and the Unified Modeling Language UML, which integrates the OO method, becomes the absolute core, as a result, almost all international academic and technical exchanges related to software modeling have formed a narrow and domineering atmosphere based on UML.

On the other hand, we can also see that it is called the main line of Software Development: abstract level upgrade, where case and 4gl hit the wall. Declarative Programming, functional programming, and aspect orientation have their own unique characteristics, but they are not yet under the king. Modeling has become the focus of software engineering technology and academic research. Among them, the most representative is the model-driven Engineering (MDE) that emerged with the model-driven architecture (MDA) of Object Management Organization (OMG) [3] although there is not much emphasis on this in China, it is actually the frontier of Software Engineering (compared with other cloud and various web application technologies, including SOA, etc, is more of an application technology layer ). However, my observations on MDE in recent years have made me feel that it has not broken through case in a certain sense. Some limitations of 4gl are likely to hit the wall again [4]. I have made such a decision when MDA was just released. We have tracked and participated in international MDE in the last year.CommunityThe direct communication in, makes my opinion more powerful.

Because of this, we can make such a judgment: The current computer application construction technology still does not find the most reasonable and basic architecture; on top of the Turing machine with a solid mathematical foundation, an important basic level is also required. It must also be solid on top of mathematics, and it has not yet appeared [5]. In my opinion, oo is currently in this incompetency position and will eventually become a story called the King of monkeys.

How to connect a logical system to the real world

A logical system (that is, a formal system) is a closed and self-consistent symbol/operation (reasoning) system, which does not include (decide) its purpose. In other words, a complete logical system does not need to include a fixed solution that is connected to the outside world. In fact, this can also be seen as the reason why it is called a "formal" (formalized. The basic idea of zhang3 is to construct a logic-based non-OO programming language. This form of system is undoubtedly and inevitably based on the Turing machine, as he said [1]:

"The real world is too complex, and it is difficult to sort out the entanglement between the real world and the language. Instead, we should first return to the deterministic world constructed by the Turing Machine to explore the mysteries of language in this world ."

This kind of bottom-up constructor is in line with my constructor philosophy. In fact, any modern computer programming language is constructing a form system based on a Turing machine, but there are many ways to construct it. This is the program architecture discussed in this article. Zhang3 has put forward a unique idea in this regard. One of the most important aspects is to discard the mainstream object-oriented architecture (OO ), it is based entirely on logic (and relational algebra) and follows the basic principles in analytical philosophy.

However, formal construction is only half of this topic. No matter how a formal system is built, it must eventually connect to the real world in some way to play its role-the other half of Building meaningful computer programs. In other words, we can strategically construct a formal system and how it works (in the real world) to properly separate it, but ultimately it must be well resolved. The work of zhang3 inevitably needs to face this problem, and his two recent logs show that there is no stable and satisfactory answer to this problem [6]. At the same time, although the starting point is different, I found that the research on the basic theories of model and modeling contains the basic answers to this question. I believe,Model and model-based operations are the most basic bridge to connect a logical system to the real world.. To build and apply the bridge in a specific way, we must make full use of the general modeling theory we have seen (in the study) and the basic principles of the Model working mechanism.

Rapaport and other Inspirations

As mentioned above, one of the basic questions raised by zhang3 is how the formal system is connected to the real world. From another point of view, it is the semantic problem of the language, and the specific implementation method of the relationship between syntax and semantics. More broadly, it can be traced back to the classic "meaning problem. Back to the computer and language-related fields, this is also one of the basic topics that have been studied by academia for a long time. I found that w. j. some work such as rapaport can be directly linked with some progress in general modeling to form a basic and complete theoretical framework. For the topic discussed in this article, it can also play a key guiding role.

These tasks include answering the basic question "how to produce semantics from Syntax" [7]. Rapaport analyzes the syntax, semantic structure, and relationship in detail from the perspective of "Understanding. Understanding is to obtain semantics. He believes that we always need to understand (interpret) another domain based on one domain. This is a recursive process, and it will always come down to a domain (called the base domain, base). There is no domain to explain it, and it must be explained based on itself (that is, the syntax, in this way, a semantic interpretation continuity (continuum) [8] is formed. He pointed out [7]:

When a syntax domain has its own semantic domain, its semantic interpretation function maps the mark to itself, or maps it to another mark. For the previous situation, we understand the domain by "Reaching habits" of the syntax. For the latter case, if all the marks are mapped to another different sign-then this case is equivalent to using a dictionary. [...] In all circumstances, we have a closed meaning network-a holistic, "conceptual role Semantics ". This is why the semantics is caused by the answer in the syntax.

In fact, from the perspective of how a cognitive subject understands the meaning of a language, there may be a lot of arguments about his solution, but in turn, from constructing a finite/practical formal language system, it is related to the problem field (the real world), which gives us great inspiration. Especially for the topics discussed in this article, such as the development topic explicitly proposed by zhang3: How to Use the simplest/basic Turing Machine (which can be regarded as the most basic syntax/semantic domain) build a formal system, which can construct the various complex structures we expect to correspond to the various things (semantics) in the real world ). From the perspective of "Upgrading abstract layers" advocated by the software engineering field, a bottom-up and constructive "Expressing continuity" can be seen as the connotation of "abstract layers, taking this as a clue, combined with a series of new understandings of General Model Theory and its working mechanism, we can find that not only the abstract level, on this basis, we can comprehensively review some things behind such concepts as 4gl/DSL, or the so-called "declarative", as well as the key theories of almost all MDE, make a clearer explanation or organization. Thus, a framework may be implemented to integrate some of the meanings of 4gl/DSL, databases, including another important and active field of information science, and ontology engineering. In this system, data structures/models have specific meanings. They are not (completely) equivalent to the previous understanding, and even basic concepts such as programs and algorithms. Among them, one of the most important contributions of what I call "General Modeling Theory" is to put this framework on a strict mathematical basis, this is the most critical guarantee to ensure that our theories and solutions are solid and effective. (This is the first time)

--

[1] See zhang3: outline: An email reply to my study, the fifth weight, etc.

[2] For more information, see object-oriented deconstruct and relational algebra and object-oriented theory. The Oo, Oo, and limits of waterbird (1998) on the Network <1> and <2> are very enlightening early discussions I read earlier.

[3] for preliminary concepts, see enterprise engineering Forum model-driven Engineering (MDE): a preliminary introduction.

[4] in models: execution or more and my discussions, I vaguely pointed out this point. Everyone seems to have intentionally or unintentionally avoided or ignored, and I have seen other places where they strongly deny this issue.

[5] This problem is also essentially related to the computer architecture. For example, it can be directly linked to the bottleneck of the Von noriman architecture and the features of the operating system, however, it is also necessary to find the corresponding solution under the current computer architecture.

[6] zhang3's discussions, such as Plato's world of ideas. The last two articles are a major change in the form system and implementation methods-memo. My preliminary opinion on this is also the predecessor of this Article. See my Douban log: some basic ideas about software program architecture.

[7] rapaport, W. J., "Understanding understanding: syntactic semantics and computational Cognition", Philosophical Perspectives, vol. 9 (1995)

[8] the concept of continuity here should come from B. C. Smith (1987 ). He studied semantic issues from the perspective of Knowledge Expression and proposed the proposal of correspondence dence continuum in the expression system (which can be roughly understood as a semantic system.

* Zhang3: Discuss with Ty the problem of semantic interpretation continuity. An interesting discussion made after this article is published.

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.