Hello from Oscar

My name is Oscar Kogosov, I live in Ashdod, Israel.

I am a new member of the community and would like to tell a little about myself.

My work biography consists of three parts. The first and second parts are more than twenty years old, the third - I hope, will last no less.

In the first part, I worked in the former Soviet Union in the development on Assembler language programs for diagnostics of large technical systems, as well as economic programs in the field of design in the PL / 1 and COBOL languages. The economy in the Soviet Union was not very successful, but I can assure you that this is not the fault of my programs. Jumping into the third period, in which I am now and developing the PPL programming language, the name of which reminds me not only of the PL / 1 language, but also everything that was associated with that time.

By the beginning of the second period of my activity, the C language developed by Kernighan & Ritchie confidently took its leading place as the most used in my work. A new life began in Israel, a huge number of a wide variety of technical tasks - transport, diagnostic, development of drivers and applications in the field of aviation. Various operating systems - real-time and Windows, in the latter I had to work the most. During this period, experience in DSL development would be very useful for me, because I had to develop tools for describing actions that had to be carried out in the laboratory when testing equipment, as well as in real projects. This experience was useful to me when developing the PPL language, the absence of which at that time I have to regret.

The end of the second period was marked by the acquired experience with C++. The third period is the formal end of labor activity, I retired. But it was already impossible to stop. I started writing programs in C# for my daughter’s travel company - we invented these tasks ourselves and used them ourselves. Several years passed in this way. But then the epidemic began, tourism suffered greatly, and I had to spend a lot of time at home. And then the opportunity arose to start developing the PPL language. After a year of active work, a working version appeared, in which the penultimate error was eliminated (I hope to eliminate the penultimate one in each subsequent version). The work continues in two directions - in width, as connecting new libraries, and in depth, as adding new features of the language and improving its performance. PPL is currently running on the Windows platform, and is being adapted to work on other platforms.

You can see the PPL Tutorial, examples and programs – GitHub - okogosov/PPL: Parenthesis Programming Language (PPL)

The development process is the discussion of ideas from the project participants. I am the only participant in this project today, I have to argue with myself, redo what has already been done, making the best decision. At such meetings, a lot of coffee and other drinks were drunk with oneself, all changes to the project were daily and in detail documented for history.

I am going to go into detail about the goals of the project and the design of its various parts in the following articles.

8 Likes

Wow! Quite an extensive career with a variety of experiences.

I programmed a few applications in C++, but I never really liked it, to be honest. I jumped to Java, because I saw it as a better C++, but C always remained in my heart. I like it till today, even though now I work mostly with Go and C#.

Thanks for sharing your background!

Regards,

Fidel H Viegas

Hi Fidel,
Thank you very much for interest to PPL.
Back side of my “extensive work experience” - I work slower than modern programmers, it means I do fewer bugs in the same time than they do.
I added to my github the project PJ.demo, as illustration of PPL Preprocessor:
converts file.scr to file.ppl in accordance with grammar,
defined in files Patterns.json & Keywords.json
This project includes sample of grammar and detailed README.txt and may be used for generation other code.
As well code PatternJson may be converted from C# to Java if it is needed.

The main PPL features:
-extensibility, using functionalities of C# and adding user’s libraries by means of creating DLLs.
It does not require any changes PPL, only addititions.
-possibility to add all PPL-functionality to any user Applicaions, not only for statisics data processing.
My american friend,statistician, asked to add statistics modules.

Mode-ppl it is internal mode in PPL, programmer writes code in mode-scr and Preprocessor translates it to mode-ppl, to may find in tutorial numerous samples with generated code(unfortunately always it is not enough explanations).
To increase performance PPL preprocessor result may be saved with command cpc(creapplcode).
PPL Tree-service include many functions to work with trees, for ex.
-RestoreExpressionFromTree
-GetPredecessor/Successor Node
-GetComponentByName
-CloneNode
-Save/Read tree etc.
I tried to use Newtonsoft.Json to save/read tree in PPL,
but this package does not work with Not-Limited depth trees.

Size of PPL code sometimes more or sometimes less, than same C# code, for example in C# string variable must be translated in digital variable for calculations, in PPL it does not required.
Operator “for” has default increment = 1, it means not need to set it in code.
One feature there is no exist in any language, that I know - to get argument name (cmd getargname(param_name) ).
Now placement for additional DLLs is together with exe-file, but it is excellent your idea to set it in Configuration-file and it is not a big problem.

Now I use VS Code for editing SCR-code, select language-mode C#, but I do not know how to extend VS Code functionalities and add code-snippets.
As well I want to create site for customers to learn PPL with sandbox.
I work without assistances in this project, so work is not progressing as fast as I would like.
I abandoned other projects within 2 last years to concentrate efforts on PPL.
I will be glad any kind of cooperations with you in future.

Sincerely
Oscar

P.S. I downloaded SableCC and planned to learn it.
P.P.S. Today is the first snowy day in my area.

Hi, @Oscar.K !

My humble apologies for the late reply. Somehow, I was unable to view your reply, even though I was alerted via e-mail.

Thank you so much for the detailed explanation! Working alone is not an easy task. Therefore, I should congratulate you once more for being so focused in creating this language.

Have you tried playing around with huge amounts of data? I’ve had some issues with WebLang while processing a huge JSON file. But that is mainly because the interpreter is a tree-walker as opposed to compile to bytecode and then interpret. I haven’t really had time to play around with it now, but I am planning on allocating some time to improve the executing time. I’ve played around with a library that I can’t remember the name now, but it was exceedingly fast. But WebLang uses Markup Algebra, making it more versatile and powerful.

As for SableCC, given that you play around with C#, I’d suggest you download the following modified version of SableCC (Indrek's SableCC page) and follow this tutorial I wrote 20 years ago (Compiler Design - SableCC tutorial), and then complement it with this tree CST to AST transformation tutorial (Mistaeks I Hav Made: Concrete to Abstract Syntax Transformations with SableCC)

Anyway… good to hear from you again.

Regards,

Fidel H Viegas

Hi Fidel,
See file - https://github.com/okogosov/PPL/blob/main/Geo.zip
For testing processing huge amounts of data I created list of all towns in the world as Tree.
This Geo.zip contains part of them only.
You may see results in Andorra.Cities.data
Structure of data:
Country_code
Region_code
Town/Village_name

There are sevaral ways to define data structure:
simple variables, arrays, storage(multi-dimensional array), structures
I use in this geo-sample only variables to define towns, it is not enough effectively (arrays much better), but
it is the fastest way to get results.
I work on performance improvement in PPL.
Another way is to create C# library for special processing data and add it to PPL.
Sometimes it is enough using my DataFrame library (like as Pandas DataFrame in Python).

Cheers,
Oscar

Hi Fidel,
Happy New Year and good wishes to you and your family!
The latest version PPL.v.1.0.26 is added to github.
I added your idea to work with user DLLs from any folder
and other new features.
I hope the number of programmers using PPL will grow this year.

Best regards,
Oscar

Happy New Year, Oscar!

And thank you for letting me know this. I will have a look at it whenever I have time. You are actually quite an inspiring person, quite focused on what you do. Congratulations on that! I admire people like this.

Anyway, I’ll let you know as soon as I test it.

Thanks!

Fidel.