{"id":6836,"date":"2020-03-06T20:55:00","date_gmt":"2020-03-06T19:55:00","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=6836"},"modified":"2020-03-06T09:21:39","modified_gmt":"2020-03-06T08:21:39","slug":"what-is-faster-in-c-a-struct-or-a-class-c-architects-medium","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2020\/03\/06\/what-is-faster-in-c-a-struct-or-a-class-c-architects-medium\/","title":{"rendered":"What Is Faster In C#: A Struct Or A Class? &#8211; C# Architects &#8211; Medium"},"content":{"rendered":"<blockquote><p>What do you think is faster: filling an array with one million structs, or filling an array with one million classes?<\/p><\/blockquote>\n<p><span class=\"as cr fj au bs fk by bz ca cb cc\"><a class=\"cv cw bb bc bd be bf bg bh bi fl bl bm cz da\" href=\"https:\/\/medium.com\/@mdfarragher?source=post_page-----99e4761a7b76----------------------\" rel=\"noopener\">Mark Farragher<\/a> ask himself <\/span><em><a href=\"https:\/\/medium.com\/csharp-architects\/whats-faster-in-c-a-struct-or-a-class-99e4761a7b76\">What Is Faster In C#: A Struct Or A Class? &#8211; C# Architects &#8211; on Medium<\/a>. <\/em>But of course the third version is faster because he&#8217;s not comparing apples and oranges!<\/p>\n<p>The first two routines handles the points by reference while in the third by value. Speaking in Eiffel, the first two versions are &#8220;normal&#8221; classes, the third is an expanded one. It makes a world of difference!<\/p>\n<p>Well, I do acknowledge that many programming languages does not make the difference manifest.<\/p>\n<p><!--nextpage--><\/p>\n<blockquote>\n<div id=\"d252\" class=\"dx dy cc at dz b ea eb ec ed ee ef eg eh ei ej ek\">\n<h1 class=\"dz b ea el ec em ee en eg eo ei ep cc\">What Is Faster In C#: A Struct Or A Class?<\/h1>\n<\/div>\n<div class=\"eq\">\n<div class=\"n er es et eu\">\n<div class=\"o n\">\n<div>\n<div class=\"ev ew ex\">\n<div class=\"ey n ez o p dm fa fb fc fd fe dq\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div class=\"ev ew ex\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"r ff ex ew\" src=\"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/03\/1IyCy3Cj8Kuv759UIaFq3aw.jpeg?resize=48%2C48&#038;ssl=1\" alt=\"Mark Farragher\" width=\"48\" height=\"48\" \/><\/div>\n<\/div>\n<div class=\"fg ak r\">\n<div class=\"n\">\n<div>\n<div class=\"fh n o fi\"><span class=\"as cr fj au bs fk by bz ca cb cc\"><a class=\"cv cw bb bc bd be bf bg bh bi fl bl bm cz da\" href=\"https:\/\/medium.com\/@mdfarragher?source=post_page-----99e4761a7b76----------------------\" rel=\"noopener\">Mark Farragher<\/a><\/span><\/p>\n<div class=\"fm r ap h\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div><a class=\"cv cw bb bc bd be bf bg bh bi fl bl bm cz da\" href=\"https:\/\/medium.com\/csharp-architects\/whats-faster-in-c-a-struct-or-a-class-99e4761a7b76?source=post_page-----99e4761a7b76----------------------\" rel=\"noopener\">Mar 15, 2019<\/a> \u00b7 4 min read<\/div>\n<div class=\"n o\">\n<div class=\"gn r ap\"><\/div>\n<\/div>\n<div class=\"gn r ap\"><\/div>\n<div class=\"gn r ap\"><\/div>\n<div class=\"go r ao\"><\/div>\n<p id=\"9266\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">In this article I\u2019ll take a look at structs and classes in C#.<\/p>\n<p id=\"00c1\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Understanding the performance difference between these two will help you pick the correct code for every occasion.<\/p>\n<p id=\"014f\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Check out my code:<\/p>\n<figure class=\"hd he hf hg hh hi\">\n<div class=\"hj r ev\">\n<div class=\"sr r\"><iframe loading=\"lazy\" class=\"dm t u hl ak\" title=\"A performance comparison between structs and classes in C#\" src=\"https:\/\/medium.com\/media\/feed7605d475771d904ad94c54fcacc7\" width=\"680\" height=\"1558\" frameborder=\"0\" scrolling=\"auto\" allowfullscreen=\"allowfullscreen\" data-mce-fragment=\"1\"><\/iframe><\/div>\n<\/div>\n<\/figure>\n<p id=\"f90c\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">I\u2019ve got a <strong class=\"gr hm\">PointClass<\/strong> and a <strong class=\"gr hm\">PointStruct<\/strong>, both containers for storing X and Y integer values. And there\u2019s also a <strong class=\"gr hm\">PointClassFinalized<\/strong> with a finalizer.<\/p>\n<p id=\"21e7\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">The <strong class=\"gr hm\">MeasureTestA<\/strong> method allocates an array of 1,000,000 <strong class=\"gr hm\">PointClassFinalized<\/strong> instances.<\/p>\n<p id=\"21fa\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">The <strong class=\"gr hm\">MeasureTestB<\/strong> method is almost identical, but it allocates 1,000,000 instances of <strong class=\"gr hm\">PointClass<\/strong> instead.<\/p>\n<p id=\"f5cb\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">And there\u2019s <strong class=\"gr hm\">MeasureTestC<\/strong> which allocates 1,000,000 instances of <strong class=\"gr hm\">PointStruct<\/strong>.<\/p>\n<p id=\"f233\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Which method do you think is fastest?<\/p>\n<p id=\"7881\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Let\u2019s find out:<\/p>\n<figure class=\"hd he hf hg hh hi dh di paragraph-image\">\n<div class=\"ho hp ev hq ak\">\n<div class=\"dh di hn\">\n<div class=\"hj r ev hv\">\n<div class=\"hw r\">\n<div class=\"hr hs dm t u hl ak bs ht hu\"><a href=\"https:\/\/medium.com\/csharp-architects\/whats-faster-in-c-a-struct-or-a-class-99e4761a7b76\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/03\/1VXCMqVT1MKgpHzIRvwwBeQ.png?w=910&#038;ssl=1\" alt=\"\" \/><\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p id=\"11ad\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Did you expect that?<\/p>\n<p id=\"b11b\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Let\u2019s focus on <strong class=\"gr hm\">MeasureTestB<\/strong> and <strong class=\"gr hm\">MeasureTestC<\/strong> for now. The only difference between these two methods is that the one allocates classes, and the other allocates structs.<\/p>\n<p id=\"b7e6\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\"><strong class=\"gr hm\">MeasureTestC<\/strong> allocates structs and runs in only 17 milliseconds which is 8.6 times faster than <strong class=\"gr hm\">MeasureTestB<\/strong> which allocates classes!<\/p>\n<p id=\"c9cf\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">That\u2019s quite a difference!<\/p>\n<p id=\"38c2\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">So what\u2019s going on here?<\/p>\n<p id=\"784b\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">The difference is caused by how structs and classes are stored in memory. Here\u2019s what the memory layout looks like for a list of <strong class=\"gr hm\">PointClass<\/strong> instances:<\/p>\n<figure class=\"hd he hf hg hh hi dh di paragraph-image\">\n<div class=\"ho hp ev hq ak\">\n<div class=\"dh di ib\">\n<div class=\"hj r ev hv\">\n<div class=\"ic r\">\n<div class=\"hr hs dm t u hl ak bs ht hu\"><\/div>\n<p><a href=\"https:\/\/medium.com\/csharp-architects\/whats-faster-in-c-a-struct-or-a-class-99e4761a7b76\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/03\/1YVuVocPkdYDrMz8BxUnj6w.png?w=910&#038;ssl=1\" alt=\"\" \/><\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p id=\"2b2d\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">The list is a local variable, so it\u2019s stored on the stack. It references an array of PointClass instances on the heap.<\/p>\n<p id=\"15d5\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">But here\u2019s the twist: PointClass is a reference type, so it\u2019s stored elsewhere on the heap. The list only maintains an array of object references that point to PointClass instances stored elsewhere on the heap.<\/p>\n<p id=\"717e\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Note the orange arrows in the diagram. These are array elements that reference objects elsewhere on the heap.<\/p>\n<p id=\"ee37\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">To fill the array with objects, <strong class=\"gr hm\">MeasureTestB<\/strong> has to allocate 1,000,000 objects on the heap and store their references in the array. That\u2019s a lot of work!<\/p>\n<p id=\"77e9\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">When you access a specific array element, the .NET runtime needs to retrieve the object reference and then \u2018follow\u2019 the reference to get at the PointClass instance.<\/p>\n<p id=\"0e99\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">And when the array goes out of scope, the .NET garbage collector has to dispose every single PointClass instance to reclaim the memory.<\/p>\n<p id=\"d98d\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">The <strong class=\"gr hm\">PointClassFinalized<\/strong> class in <strong class=\"gr hm\">MeasureTestA<\/strong> has a finalizer which slows down this process even further.<\/p>\n<p id=\"aeb1\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">The .NET Framework runs all finalizers on a single thread, so now that thread has to process 1,000,000 objects in turn before the garbage collector can reclaim the memory.<\/p>\n<p id=\"c985\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">And you can clearly see this in the benchmark results. <strong class=\"gr hm\">MeasureTestA<\/strong> is 1.7 times slower than <strong class=\"gr hm\">MeasureTestB<\/strong>.<\/p>\n<p id=\"f9b7\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Now compare this to the memory layout of a list of <strong class=\"gr hm\">PoinstStruct<\/strong> instances:<\/p>\n<figure class=\"hd he hf hg hh hi dh di paragraph-image\">\n<div class=\"ho hp ev hq ak\">\n<div class=\"dh di ib\">\n<div class=\"hj r ev hv\">\n<div class=\"ic r\">\n<div class=\"hr hs dm t u hl ak bs ht hu\"><a href=\"https:\/\/medium.com\/csharp-architects\/whats-faster-in-c-a-struct-or-a-class-99e4761a7b76\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2020\/03\/1_EAypava_xVLQXuJvq_hGA.png?w=910&#038;ssl=1\" alt=\"\" \/><\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p id=\"eda2\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Structs are value types, which means they are stored inline inside their containing data type. So now all PointStruct instances are stored inside the array itself. There is only a single object on the heap.<\/p>\n<p id=\"f274\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">To initialize the array, the .NET runtime can now write the X and Y values directly into the correct array elements. There\u2019s no need to allocate new objects on the heap and store their references.<\/p>\n<p id=\"37ac\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">And when you access a specific array element, the .NET runtime can retrieve the struct directly because it\u2019s stored right there, inside the array.<\/p>\n<p id=\"897c\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">When the array goes out of scope, the .NET garbage collector now only needs to dispose a single object.<\/p>\n<p id=\"2bba\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">All these savings add up, and this is why <strong class=\"gr hm\">MeasureTestC<\/strong> is the fastest.<\/p>\n<p id=\"e756\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">So does that mean you should always use a struct?<\/p>\n<p id=\"b279\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Hell, no! Here\u2019s what you need to do:<\/p>\n<ul class=\"\">\n<li id=\"e7e3\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc id ie if\" data-selectable-paragraph=\"\">When you\u2019re storing more than 30\u201340 bytes of data, use a class.<\/li>\n<li id=\"a80b\" class=\"gp gq cc at gr b gs ig gu ih gw ii gy ij ha ik hc id ie if\" data-selectable-paragraph=\"\">When you are storing reference types, use a class.<\/li>\n<li id=\"66f0\" class=\"gp gq cc at gr b gs ig gu ih gw ii gy ij ha ik hc id ie if\" data-selectable-paragraph=\"\"><mark class=\"sm sn jn\">When you are storing up to a few thousand instances, use a class.<\/mark><\/li>\n<li id=\"ef28\" class=\"gp gq cc at gr b gs ig gu ih gw ii gy ij ha ik hc id ie if\" data-selectable-paragraph=\"\">When you list is long-lived, use a class.<\/li>\n<li id=\"b196\" class=\"gp gq cc at gr b gs ig gu ih gw ii gy ij ha ik hc id ie if\" data-selectable-paragraph=\"\">In all other cases, use structs.<\/li>\n<\/ul>\n<p id=\"803a\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">What are your thoughts on structs and classes in C#?<\/p>\n<p id=\"234b\" class=\"gp gq cc at gr b gs gt gu gv gw gx gy gz ha hb hc dr\" data-selectable-paragraph=\"\">Write a comment and let me know!<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">What do you think is faster: filling an array with one million structs, or filling an array with one million classes? Mark Farragher ask himself What Is Faster In C#: A Struct Or A Class? &#8211; C# Architects &#8211; on Medium. But of course the third version is faster because he&#8217;s not comparing apples and&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2020\/03\/06\/what-is-faster-in-c-a-struct-or-a-class-c-architects-medium\/\">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":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[72,34],"tags":[],"class_list":["post-6836","post","type-post","status-publish","format-standard","hentry","category-documentations","category-eiffel"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-1Mg","jetpack-related-posts":[{"id":5082,"url":"https:\/\/monodes.com\/predaelli\/2018\/12\/25\/bitmasks\/","url_meta":{"origin":6836,"position":0},"title":"Bitmasks","author":"Paolo Redaelli","date":"2018-12-25","format":false,"excerpt":"\u00a0Bitmask: There Is Space at the Bottom \u2013 Bits and Pieces Interesting, but it would be more interesting if Eiffellized. JAVASCRIPT REACT WEB DEV NODE GET STARTED Bitmask: There Is Space at the\u00a0Bottom Chidume Nnamdi \ud83d\udd25\ud83d\udcbb\ud83c\udfb5\ud83c\udfae Sep 28 Image from pixabay.com There is so much space at the bottom. Deep\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13109,"url":"https:\/\/monodes.com\/predaelli\/2025\/04\/16\/1024cores-distributed-reader-writer-mutex\/","url_meta":{"origin":6836,"position":1},"title":"1024cores &#8211; Distributed Reader-Writer Mutex","author":"Paolo Redaelli","date":"2025-04-16","format":false,"excerpt":"1024cores - Distributed Reader-Writer Mutex This is definitively something that I would like to Eiffelize! Now, when we know that traditional reader-writer mutexes do no scale and write sharing is our foe, and that the way to go is state distribution, let's try to create a scalable distributed reader-writer mutex.\u2026","rel":"","context":"In &quot;Agenda&quot;","block_context":{"text":"Agenda","link":"https:\/\/monodes.com\/predaelli\/category\/agenda\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2025\/04\/distributed-reader-writer-mutex-1.webp?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":8158,"url":"https:\/\/monodes.com\/predaelli\/2021\/02\/07\/the-v-programming-language\/","url_meta":{"origin":6836,"position":2},"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":[]},{"id":1286,"url":"https:\/\/monodes.com\/predaelli\/2016\/04\/17\/eiffel-a-viable-candidate-as-a-language-for-the-gnome-platform\/","url_meta":{"origin":6836,"position":3},"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":1511,"url":"https:\/\/monodes.com\/predaelli\/2016\/05\/09\/1511\/","url_meta":{"origin":6836,"position":4},"title":"Testing time: git clone --single-branch\u2026","author":"Paolo Redaelli","date":"2016-05-09","format":"status","excerpt":"Testing time: git clone --single-branch -b bell Tybor@git.sv.gnu.org:\/srv\/git\/liberty-eiffel.git bell For real, this time. As usual Google and stackoverflow.com is faster than reading the man pages.","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":297,"url":"https:\/\/monodes.com\/predaelli\/2015\/06\/12\/javascript-other-languages\/","url_meta":{"origin":6836,"position":5},"title":"JavaScript + Other Languages","author":"Paolo Redaelli","date":"2015-06-12","format":"link","excerpt":"JavaScript+OtherLanguages Those slides JavaScript + Other Languages are really useful to implement an eventual Eiffel to JavaScript compiler. Well, actually it should be called transcompiler.... We could just feed the C files made by current Liberty compiler but it seems to me that passing throught C which is a procedural\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":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/6836","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=6836"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/6836\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=6836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=6836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=6836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}