I am a junior developer diving into Ada, and I believe the best way to master a language is by building something real and challenging.
To learn Ada, system-level stream parsing, and formal verification, I started building apkforge: a self-contained CLI tool for parsing, decompiling, patching, repacking, and signing Android APK and DEX files completely in native Ada.
I would love any advice, code reviews, or feedback on writing idiomatic Ada code rather than translating patterns from other languages.
This is super interesting and definitely a useful project! Are you looking to hoist something like smali & Java or just disassemble? Also, is the source for apkforge available yet?
Command-line functionality is trash; not the concept, but the second- and third-order effects from the ascendency of C, particularly in OS design and development. (To put a name to it, commandline parameters should be parsed and ideally typed by a system-level library; instead of the mess of ad hoc application-level parsing.)
Remember that Ada is very good at allowing you to separate your interface and implementation, many problems can be addressed using this.
Remember Ada’s generics can have subprograms, objects, and generic packages as formal parameters; remember that you can have in out mode on the formal object parameters.
And last, the key to really using Ada effectively: use the type-system to model your problem-space, then use that to solve your problem.