{"id":13371,"date":"2025-05-16T18:02:40","date_gmt":"2025-05-16T16:02:40","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=13371"},"modified":"2025-05-16T18:02:44","modified_gmt":"2025-05-16T16:02:44","slug":"saturating-the-name-space","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2025\/05\/16\/saturating-the-name-space\/","title":{"rendered":"Saturating the name-space"},"content":{"rendered":"\n<p>We are saturating the name space for programming languages. These days I discovered the <a href=\"https:\/\/odin-lang.org\/\"><strong>Odin<\/strong> Programming Language<\/a> &#8220;&#8221;<em>The Data-Oriented Language for Sane Software Development.<\/em>&#8221; <a href=\"https:\/\/odin-lang.org\/docs\/faq\/\">According to its FAQs<\/a> there are some things we may learn for Eiffel.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Its guiding principles are <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Simplicity and readability<\/li>\n\n\n\n<li>Minimal: there ought to be one way to write something<\/li>\n\n\n\n<li>Striving for orthogonality<\/li>\n\n\n\n<li>Programs are about transforming data into other forms of data\n<ul class=\"wp-block-list\">\n<li>Code is about expressing algorithms\u2014not the type system<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>There is embedded knowledge and wisdom in older programming languages<\/li>\n\n\n\n<li>The entire language specification should be possible to be memorized by a mere mortal<\/li>\n<\/ul>\n\n\n\n<p>Its featre are features (in no particular order):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Full UTF-8 Support<\/li>\n\n\n\n<li>Custom allocators that are simple to use:\n<ul class=\"wp-block-list\">\n<li>Memory arenas\/regions, pools, stacks, etc. which can be easily added<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/odin-lang.org\/docs\/faq\/#context-system\">Context system<\/a> for allocations, logging, and thread data<\/li>\n\n\n\n<li>Built-in types and procedures that take advantage of the context system:\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">new(type)<\/code>, and <code class=\"\" data-line=\"\">make<\/code> use the context\u2019s allocator (unless explicitly given)<\/li>\n\n\n\n<li>Dynamic arrays and hash maps (<code class=\"\" data-line=\"\">[dynamic]int<\/code> and <code class=\"\" data-line=\"\">map[string]int<\/code>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Array programming\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">a, b: [4]f32; c := a * b<\/code><\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">i := a.x * b.y<\/code><\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">v := swizzle(a, 1, 2, 0)<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/odin-lang.org\/docs\/faq\/#why-does-odin-have-explicit-procedure-overloading-but-not-implicit-procedure-overloading\">Explicit procedure overloading<\/a><\/li>\n\n\n\n<li>Introspection on all types<\/li>\n\n\n\n<li>High control over memory layout\n<ul class=\"wp-block-list\">\n<li>Alignment<\/li>\n\n\n\n<li>Field offsets<\/li>\n\n\n\n<li>Endianness<\/li>\n\n\n\n<li>Data sizes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Endian specific integer types (useful for specific data formats)\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">u32le<\/code><\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">u64be<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Decent <a href=\"https:\/\/odin-lang.org\/docs\/faq\/#packages\">package<\/a> system and file handling<\/li>\n\n\n\n<li>No <em>bad<\/em> preprocessor<\/li>\n\n\n\n<li>Type inference\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">x: int = 1<\/code><\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">x := 1 \/\/ x is deduced to be an int<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">using<\/code>\n<ul class=\"wp-block-list\">\n<li>making everything a namespace (similar to Pascal\u2019s <code class=\"\" data-line=\"\">with<\/code> but on steroids)<\/li>\n\n\n\n<li>Ability to have <a href=\"https:\/\/odin-lang.org\/docs\/faq\/#is-odin-an-object-oriented-language\">subtype polymorphism<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Multiple return values<\/li>\n\n\n\n<li>Clean, consistent, and fast to parse syntax<\/li>\n\n\n\n<li>No need for procedure prototypes<\/li>\n\n\n\n<li><a href=\"https:\/\/odin-lang.org\/docs\/overview\/#defer-statement\"><code class=\"\" data-line=\"\">defer<\/code> statements<\/a>\n<ul class=\"wp-block-list\">\n<li>defer a statement until the end of scope (akin to D\u2019s <code class=\"\" data-line=\"\">scope(exit)<\/code>)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Nested procedures and types<\/li>\n\n\n\n<li>Tagged unions and untagged unions<\/li>\n\n\n\n<li>Ranged <code class=\"\" data-line=\"\">for<\/code> loops<\/li>\n\n\n\n<li><a href=\"https:\/\/odin-lang.org\/docs\/overview\/#branch-statements\">Labelled branches<\/a>\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">break label_name<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">break<\/code> by default in <code class=\"\" data-line=\"\">switch<\/code> statements\n<ul class=\"wp-block-list\">\n<li>Explicit <code class=\"\" data-line=\"\">fallthrough<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u201cRaw\u201d strings\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">x := `what &quot;the&quot; string?`<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">cstring<\/code> for legacy use<\/li>\n\n\n\n<li><a href=\"https:\/\/odin-lang.org\/docs\/overview\/#parametric-polymorphism\">Parametric polymorphism<\/a> (\u201cgenerics\u201d)<\/li>\n\n\n\n<li><a href=\"https:\/\/odin-lang.org\/docs\/overview\/#foreign-system\">Foreign system<\/a><\/li>\n\n\n\n<li>Compile time <a href=\"https:\/\/odin-lang.org\/docs\/overview\/#when-statement\"><code class=\"\" data-line=\"\">when<\/code> statements<\/a><\/li>\n\n\n\n<li>Bounds checking which is togglable at the statement level:\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">#no_bounds_check<\/code> <code class=\"\" data-line=\"\">#bounds_check<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">i128<\/code> and <code class=\"\" data-line=\"\">u128<\/code> support<\/li>\n<\/ul>\n\n\n\n<p>And lots more!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">We are saturating the name space for programming languages. These days I discovered the Odin Programming Language &#8220;&#8221;The Data-Oriented Language for Sane Software Development.&#8221; According to its FAQs there are some things we may learn for Eiffel.<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2025\/05\/16\/saturating-the-name-space\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[34,98,278],"tags":[470,469],"class_list":["post-13371","post","type-post","status-publish","format-standard","hentry","category-eiffel","category-liberty-eiffel","category-tricks","tag-bounds_check","tag-no_bounds_check"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-3tF","jetpack-related-posts":[{"id":872,"url":"https:\/\/monodes.com\/predaelli\/2016\/01\/06\/saturation-arithmetic-wikipedia-the-free-encyclopedia\/","url_meta":{"origin":13371,"position":0},"title":"Saturation arithmetic &#8211; Wikipedia, the free encyclopedia","author":"Paolo Redaelli","date":"2016-01-06","format":false,"excerpt":"Saturation arithmetic for integers has also been implemented in software for a number of programming languages including C, C++, and Eiffel. Sorgente: Saturation arithmetic - Wikipedia, the free encyclopedia Oh, I almost forgot that. Such a library was conceived by Geoff 24 who gave up using Eiffel in Mar 2003\u2026","rel":"","context":"In &quot;Eiffel&quot;","block_context":{"text":"Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9332,"url":"https:\/\/monodes.com\/predaelli\/2022\/05\/01\/liberty-liberty-eiffel-programming-language\/","url_meta":{"origin":13371,"position":1},"title":"Liberty | Liberty Eiffel programming language","author":"Paolo Redaelli","date":"2022-05-01","format":false,"excerpt":"Liberty Source: Liberty | Liberty Eiffel programming language","rel":"","context":"In &quot;Liberty Eiffel&quot;","block_context":{"text":"Liberty Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/liberty-eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1286,"url":"https:\/\/monodes.com\/predaelli\/2016\/04\/17\/eiffel-a-viable-candidate-as-a-language-for-the-gnome-platform\/","url_meta":{"origin":13371,"position":2},"title":"Eiffel: A viable candidate as a language for the Gnome platform ?","author":"Paolo Redaelli","date":"2016-04-17","format":false,"excerpt":"Eiffel: A viable candidate as a language for the Gnome platform ? It was 2004. Linux were labelled as a cancer by Ballmer, Android and iPhone didn't existed. Multi-core CPU were still high-end. It was a different world. From archive.org, before it got lost.... Twelve years ago. And it was\u2026","rel":"","context":"In &quot;Eiffel&quot;","block_context":{"text":"Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11120,"url":"https:\/\/monodes.com\/predaelli\/2024\/01\/07\/yet-another-missing-eiffel-%f0%9f%98%a2\/","url_meta":{"origin":13371,"position":3},"title":"Yet another missing Eiffel \ud83d\ude22","author":"Paolo Redaelli","date":"2024-01-07","format":false,"excerpt":"On https:\/\/github.com\/attractivechaos\/plb2 there is yet another programming language benchmark. And yet another not having Eiffel.... In addition to C, there is Nim, V, Rust.... that's very sad \ud83d\ude22","rel":"","context":"In &quot;Eiffel&quot;","block_context":{"text":"Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11869,"url":"https:\/\/monodes.com\/predaelli\/2024\/08\/16\/name-hijacking\/","url_meta":{"origin":13371,"position":4},"title":"Name hijacking","author":"Paolo Redaelli","date":"2024-08-16","format":false,"excerpt":"I like the programming language named Eiffel, at least since 1998. Now I discover its name is somehow being robbed by a CI\/CD project. I simply had to let Bertrand Meyer, father of Eiffel know it. The easiest way I found is throught X (once known as Twitter): Dear professor\u2026","rel":"","context":"In &quot;Eiffel&quot;","block_context":{"text":"Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8158,"url":"https:\/\/monodes.com\/predaelli\/2021\/02\/07\/the-v-programming-language\/","url_meta":{"origin":13371,"position":5},"title":"The V Programming Language","author":"Paolo Redaelli","date":"2021-02-07","format":false,"excerpt":"I've just read \"Is Zig the long awaited C replacement\" and it cites: The V Programming Language seems to be a \"fastly compiling\" language. Compilation speed benchmark C 5.2s gcc test.c C++ 1m 25s g++ test.cpp Zig 10.1s zig build-exe test.zig Nim 45s nim c test.nim Rust Stopped after 30\u2026","rel":"","context":"In &quot;Comparisons&quot;","block_context":{"text":"Comparisons","link":"https:\/\/monodes.com\/predaelli\/category\/comparisons\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/13371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=13371"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/13371\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=13371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=13371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=13371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}