Архив метки: cali

Cali alpha release #2

Today I announce that Cali alpha #2 is ready for internal testing.

It took me about year to make basic documentation and internal structure, but it was fun!

So, for those who just joined — CALI is new programming language paradigm,  language and framework.

Main idea is that basic language unit is not function nor class, but it’s some abstract abstraction in abstract knowledge storage.

Doh, it was pretty hard to explain for my alpha-testers, I need to go work on better «getting started».

Anyway, CALI is happening soon, stay tuned!

Cali: road to alpha #1

When you need to invent a new programming language, you need clear and bold answer to simple question: «why».
Why you need new language at all. Why this is somehow new. Why there’s not a single other language which can satisfy you. Why this is not simple «nih».

These questions not just aggressive attacks, they even useful and good ones. If you want to invent new language, then first thing you should do is to find your own answers.

Let’s elaborate a bit about how programs are developed in world.

Currently, there are some SRS in some free-form doc, and according to them software are developed. Except few thoughts in light head of engineer, there are no connection between document and program. Changes made in SRS not magically appearing in program, and vice versa, some added code to program not transferring into requirements in document.

To fill this gap, there appeared several of professions — such as QA officers, testers, tech writers/reviewers etc. But this is not very flexible approach, since it’s still loose connection.

Idea 1: Requirements must be part of project in Cali.

That’s it. Before you have a lot of code, doing something, you need to made a prototype, or SRS, or just place accents and stresses on desired behavior. I’m totally believe that this is part of project, of same degree of needfulness as some source file, or build script. Requirements, definitions, proposals all of them must be defined in clear and strict form. Why strict form? Because they all could be used not only by humans, but rather by programs.

Now time to make one bold move and declare every elements in Cali as Concept. Concept is abstraction form of knowledge, this can be class, object, file, requirement, set of classes, feature, logic or algorithm. Sounds crazy, I know. But I think it’s only way to evolve programming, further and above from current code-monkey culture.

Idea 2: Basic unit of Cali is abstract thing, codename ‘Concept’

What in common do have Concept «Class» and «Logic»? «File» and «provided method»? I think there’s no common base for Concept (even name).

Idea 3: ‘Concept’ have no properties (except unique ID, which is must exist to distinguish one Concept from another)

Read soon — which very basic Concepts will be part of language.

New programming language — CALI

Today, I’m announcing creating of new programming language, even new paradigm.

This probably are not revolution in programming world, but anyway, I see many reasons to create new language.

`Concepts And Logic Application` — or CALI, is the new-approach, fresh gulp of air in world of monkey-ware and copy-paste-source-code.

Let me explain why it is so.

In high levels languages, like Java there is massive usage of OOP, and this is … good? bad? Well, besides of personal predilections, it is just as is. You can define classes, extend it, make interfaces, inheritance, whatever. But, there is now no concept-reusage, only code-reusage. In low level langauges, there is small bits of logic behind code; which could be inlined, or re-used, but all those methods are loosely coupled.

The main Idea behind CALI is that everything is logic, or concept. Concepts could be viewed as set of described ideas or concepts.

For example in CALI could be defined Concept «Singleton», or «Factory». You can work with those concepts, extend it, modify it, change products, whatever. And this is not about editing some real end-code.

So, probably you get idea, CALI is about how programmer defines tasks and logics in his head, but not really how they render to code. Concept could be more than one Class, for example some concept will include a set of Classes with special characteristics.

First stage of this language is to get 0.1 Version, which will include Concept-editor, and one back-end renderer (this will be Java).

How is this different from meta-programming? That simple one, even in meta programming languages highest unit of language is only one Class, but not set of them.

The development will go at GitHub, source code will be published at version 0.1 stage.