After asking ChatGPT multiple times "what are the features available in object-oriented programming languages" I got the following list. What do we still miss?
"Polymorphism, Nested Objects, Traits, Templates, Generics, Invariants, Classes, NULL, Pointers, Goto, Error Handling, Exception Handling, Operators, Loops, Methods, Static Blocks, Virtual Tables, Coroutines, Threads, Monads, Algebraic Types, References, Variables, Function Inlining, Type Checking, Annotations, Arrays, Mutability, Interfaces, Constructors, Destructors, Lifetimes, Volatile Variables, Synchronization, Macros, Inheritance, Overloading, Tuple Types, Closures, Higher-Order Functions, Access Modifiers, Pattern Matching, Enumerated Types, Namespaces, Modules, Type Aliases, Decorators, Lambda Functions, Type Inference, Properties, Value Types, Multiple Inheritance, Structural Typing, Events, Callbacks, Dynamic Typing, NULL Safety, Streams, Buffers, Iterators, Generators, Metaprogramming, Aspects, Anonymous Objects, Anonymous Functions, Reflection, Type Casting, Lazy Evaluation, Garbage Collection, Immutability, Recursion, Concurrency Control, Context Management, Memory Management, Logging, Breakpoints, Assertions, Caching."
"Polymorphism, Nested Objects, Traits, Templates, Generics, Invariants, Classes, NULL, Pointers, Goto, Error Handling, Exception Handling, Operators, Loops, Methods, Static Blocks, Virtual Tables, Coroutines, Threads, Monads, Algebraic Types, References, Variables, Function Inlining, Type Checking, Annotations, Arrays, Mutability, Interfaces, Constructors, Destructors, Lifetimes, Volatile Variables, Synchronization, Macros, Inheritance, Overloading, Tuple Types, Closures, Higher-Order Functions, Access Modifiers, Pattern Matching, Enumerated Types, Namespaces, Modules, Type Aliases, Decorators, Lambda Functions, Type Inference, Properties, Value Types, Multiple Inheritance, Structural Typing, Events, Callbacks, Dynamic Typing, NULL Safety, Streams, Buffers, Iterators, Generators, Metaprogramming, Aspects, Anonymous Objects, Anonymous Functions, Reflection, Type Casting, Lazy Evaluation, Garbage Collection, Immutability, Recursion, Concurrency Control, Context Management, Memory Management, Logging, Breakpoints, Assertions, Caching."
👍21
In two weeks, on the 22nd of April, at 17:00 (Moscow time) we will live-stream ICCQ'23 conference. It will start with a keynote speech of Prof. David West (the author of "Object Thinking" book) and then followed by the presentations of four accepted research papers. The conference is organised in cooperation with IEEE Computer Society and hosted by St. Petersburg State University.
👍34❤10
The sixth lecture (80 minutes) of the PPA course was just published, it is about the ingredients of program analysis, such as metrics of it, basic principles, definitions, etc. The next three lectures will be about data flow analysis, symbolic execution, and model checking.
👍31❤2
The seventh lecture (79 minutes) in the "Practical Program Analysis" series just published, about data flow analysis, with a few practical examples. I tried to explain the subject in as simpler terms as possible.
👍18❤2
Опубликовал последнюю 16-ю лекцию (80 минут) из курса "Управление качеством в программных проектах" для студентов четвертого курса Высшей Школы Экономики (ВШЭ, Москва): попытался рассказать, какими признаками должен обладать репозиторий с исходным кодом и тикетами, чтобы его можно было считать качественно организованным и контролируемым.
👍47❤13
I created a small Rust library called micromap, which implements a traditional hash map, but without the hash and without the usage of heap. Thanks to this, it appears to be five times (!) faster than the standard HashMap. The work is not finished though, since not all functions of a map are implemented. Besides, I'm not a Rust expert at all, that's why the library most certainly has mistakes. You are very welcome to contribute. The list of unsolved issues is here.
👍43❤6👎1
Maybe some of you've heard about Puzzle Driven Development (PDD), a methodology I suggested about twelve years ago: it helps decompose larger programming tasks into smaller pieces. Since then, PDD has been actively used in many GitHub repositories, through 0pdd bot (if you still don't use it, try now!). Last year I participated in a research project, which has made an attempt to extend PDD with Machine Learning, letting AI make puzzle assignment decisions. Just a few days ago a research paper that I co-authored has been published: "Prioritizing Tasks in Software Development: A Systematic Literature Review". As its name hints, it overviews existing decision making methods, highlighting their strengths and weaknesses. BTW, a bit earlier we published a short paper about the research itself: "Automatically Prioritizing and Assigning Tasks from Code Repositories in Puzzle Driven Development". More papers coming...
👍39
The eighth lecture (77 minutes) in the "Practical Program Analysis" series just published, about symbolic execution, and also about test case generation and concolic testing. It is a high level overview, which may help you understand the topic before diving deeper.
👍15❤3
The ninth lecture (76 minutes) is published, it is about Model Checking. Watch it and get ready for the last one, where we will discuss the application of Machine Learning (a.k.a. Artificial Intelligence) to program analysis and the future of analysis.
👍20
As you maybe know, the third ICCQ conference was held a few weeks ago, in St. Petersburg State University (Russia). All accepted papers were published by IEEE Xplore and all video presentations are on YouTube in this playlist (with English subtitles). Among other talks, I would strongly recommend you to watch the keynote by David West (48 minutes). Also, start thinking about submitting your papers to ICCQ'24 (the Call for Papers will be published in a few months).
👍25
I created a very simple Rust library called microstack. It essentially is a last-in-first-out stack, allocated on stack. It is faster than a standard
Vec
, because it doesn't check boundary conditions and doesn't use heap. You are welcome to use, but even more welcome to contribute by adding missing methods to it and helping me figure our why my iterators are slower than the ones of Vec
(see the benching results).👍22👎6
This media is not supported in your browser
VIEW IN TELEGRAM
Шпион (2022) — неожиданно реалистичный сериал о шпионах, чекистах, полицейских и служебных романах — в нем каждый герой немного патриот и немного сволочь. Как в жизни.
👍33👎6
In three weeks I start teaching a course about "Object-Oriented Programming" to 1st and 2nd year BSc students of Innopolis University. There will be seven lectures in total. Well, actually, there will be eight in total, but the first lecture I've already presented to MIPT students three years ago, right before the pandemic started. The goal: explain them what is OOP and why the programming languages they learn in other courses — are not OOP :) All lectures will be in English and published on my YouTube.
👍64❤14
The last 10th lecture (77 minutes) in the "Practical Program Analysis" course has been published on YouTube. It is a high-level overview of how how Machine Learning can help in code analysis, code generation, code verification, and so on. The entire course is in this playlist (10 lectures).
👍28
If you are good in C++ or Rust, you may be interested in joining our team. We are developing our own experimental object-oriented programming language. Now trying to implement a fast virtual machine for it, thus revolutionizing the way OOP code can be evaluated. It's full-time in-the-office job in Moscow (Russia), in a Fortune-100 company. Text me: @yegor256
👍27👎2
I just published the first lecture in the course named "The Pain of OOP," which I start teaching to BSc students of Innopolis University (Kazan, Russia). This lecture is an introduction to object-oriented programming and the problems I believe it has right now. 75 minutes to watch.
👍43❤3
The second lecture about object-oriented programming just published. It is about static methods and attributes, and why they are evil. Watch it: 90 minutes.
👍26❤10👎1
We are also hiring Java developers, who are interested in Elegant Objects programming style. Spring developers are not welcome :) It's a full-time in-the-office job, located in Moscow. It's a dream job for you, if you are interested in EO. Text me: @yegor256.
👍27👎3
❤18👍8👎2
В ближайшие дни планируем запись нового очередного выпуска "черно-белого айти" (наконец-то!). На какие вопросы вы хотели бы услышать ответы и какие события последнего года стоит прокомментировать?
👍90❤23