ClassBuilder 3.0 — 25 jaar oude C++ codegenerator, nu open s

Pagina: 1
Acties:
  • 623 views

Vraag


  • Jimmy Venema
  • Registratie: Augustus 2026
  • Laatst online: 24-08 21:45
Ik heb dit weekend versie 3.0 van mijn eigen tool vrijgegeven, en omdat er hier vast mensen zitten die met codegeneratie of met het moderniseren van oude codebases bezig zijn, deel ik hem hier.

Wat het is: je definieert in een GUI een objectmodel — klassen, members, methods, relaties, overerving, class- en sequencediagrammen — en ClassBuilder schrijft daar de .h/.cpp voor. De gegenereerde code gebruikt een kleine header-only runtime voor owned containers, AVL-/value-trees en serialisatie.

Self-hosted: het model dat ClassBuilder's eigen broncode genereert zit in de repo. Elk bestand onder src/model/ is door de tool zelf geproduceerd, dus de repository is meteen het uitgewerkte voorbeeld.

De geschiedenis is het aardigste stuk. Het project stond in 2002 al op SourceForge onder de GPL, en kwam daar binnen op build 439 — het was toen dus al jaren in gebruik. Sindsdien is het mijn dagelijkse gereedschap gebleven. Versie 3.0 is de eerste release onder MIT.

Wat ik nooit dacht af te maken: het was het grootste deel van zijn leven een Windows-only MFC-applicatie. De port naar Qt stond al jaren op de lijst zonder dat ik eraan begon — ~150 modelbestanden plus de complete GUI. Met AI-ondersteuning heb ik het dit jaar wél aangedurfd. MFC is er nu volledig uit en dezelfde broncode bouwt en draait op Windows, macOS en Linux, met de platformverschillen geïsoleerd in één seam.

Er zit ook een JSON-over-TCP command-API in (149 commando's), zodat het model door een script of een AI-agent aangestuurd kan worden. De modelmigraties van de port zelf liepen daardoorheen — anders zit je de tool te verbouwen ín de tool die je aan het verbouwen bent.

Installers voor alle drie de platforms staan bij de releases: *knip*

Waar ik benieuwd naar ben: wie hier gebruikt er nog serieus codegeneratie in C++, en waarvoor? Ik heb het idee dat het vakgebied grotendeels naar reflectie en templates is opgeschoven, maar voor datamodellen met veel relaties en serialisatie bevalt het mij na 25 jaar nog steeds beter.

[ Voor 2% gewijzigd door .oisyn op 29-08-2026 00:35 ]

Alle reacties


  • arjan1995
  • Registratie: Augustus 2011
  • Laatst online: 12:28
Waarom een door AI geschreven openingspost? Was niet mogelijk om de uitleg over deze tool in eigen woorden te schrijven?

Trouwens, als ik in de git history kijk, zie ik veelal commits die met behulp van Claude zijn gegenereerd. Of is er wel een eerder (eigen) project als basis genomen?

https://github.com/xaljox/ClassBuilder/commit/339f14e1b788fd7b7b0f66cab254c10def4bff95

https://github.com/xaljox/ClassBuilder/commits/main/?after=a4d52ff87c51137a6148c12aded2039486147e0d+349

  • Navi
  • Registratie: Maart 2007
  • Niet online
arjan1995 schreef op dinsdag 25 augustus 2026 @ 17:28:

Trouwens, als ik in de git history kijk, zie ik veelal commits die met behulp van Claude zijn gegenereerd. Of is er wel een eerder (eigen) project als basis genomen?
In de opening staat ook:

De port naar Qt stond al jaren op de lijst zonder dat ik eraan begon — ~150 modelbestanden plus de complete GUI. Met AI-ondersteuning heb ik het dit jaar wél aangedurfd.

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 10:32

DataGhost

iPL dev

arjan1995 schreef op dinsdag 25 augustus 2026 @ 17:28:
Waarom een door AI geschreven openingspost? Was niet mogelijk om de uitleg over deze tool in eigen woorden te schrijven?

Trouwens, als ik in de git history kijk, zie ik veelal commits die met behulp van Claude zijn gegenereerd. Of is er wel een eerder (eigen) project als basis genomen?

https://github.com/xaljox/ClassBuilder/commit/339f14e1b788fd7b7b0f66cab254c10def4bff95

https://github.com/xaljox/ClassBuilder/commits/main/?after=a4d52ff87c51137a6148c12aded2039486147e0d+349
Dit is 100% de template waarmee development-subreddits al maandenlang worden overspoeld en de reden dat ik er niet meer kom. Exact hetzelfde riedeltje, nieuwe account of geen eerdere relevante bijdragen, "I built ...", AI post met allemaal irrelevante implementatiedetails alsof het een reclamespotje moet zijn en eindigend met een matige vraag zodat het ietsjes minder op product-spam lijkt, vrij nieuw repository met gigantisch veel code erin maar dan niet strokend met een menselijk tempo. Volledig slop. Wellicht is dit wel iets, maar het zou me sterk verbazen. En als het dat wel is, dan is het extreem jammer dat de auteur kennelijk zo weinig passie voor z'n project had dat 'ie niet even zelf een stukje kon schrijven.

"Ontopic": interessant ook hoe er van een 25 jaar oude tool helemaal geen geschiedenis in het repository zichtbaar is, je zou toch verwachten dat de interface geen extreem groot deel van het project is en niet veel raakvlak heeft met de code die het daadwerkelijke werk doet. Dus dan houd je de core en herschrijf je de UI, of is dat heel raar? Blijkbaar dus, de eerste commit was een complete "re"write. Bovendien eentje van bijna 180000 regels code 7(8)7 terwijl het originele project op 57000 regels zat. Ik moet zeggen dat ik dat een vage commit-geschiedenis vind. Het kan hoor, maar dat lijkt me dan samenvallen met de release, dus dat je eerst in een prive-repo je ontwikkeling doet en het eindproduct daarvan dan commit. Maar dan is het vreemd dat er nog 350 commits volgen voordat de release een feit is.

Maar goed, die initial commit is ook van Claude. Dus tsja. Staat ook gewoon in claude.md, "pak deze oude code, herschrijf het".

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja, het is wel duidelijk. En de poster heeft zich sindsdien ook niet meer laten zien.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.