{"id":549733,"date":"2023-02-09T12:32:08","date_gmt":"2023-02-09T09:32:08","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/"},"modified":"2023-02-09T12:32:08","modified_gmt":"2023-02-09T09:32:08","slug":"if-python-is-too-slow-for-you-crystal-could-be-your-savior","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/","title":{"rendered":"#If Python is too slow for you, Crystal could be your savior"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a33a12b219b9\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a33a12b219b9\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#%E2%80%9CIf_Python_is_too_slow_for_you_Crystal_could_be_your_savior%E2%80%9D\" >&#8220;If Python is too slow for you, Crystal could be your savior&#8221;<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#Discover_the_future_of_tech\" >Discover the future of tech!<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#The_case_for_Crystal\" >The case for Crystal<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#Static_typing\" >Static typing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#Macros\" >Macros<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#No_Nil-errors\" >No Nil-errors<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#No_more_dependency_hell\" >No more dependency hell<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#The_big_drawback_Crystal_is_tiny\" >The big drawback: Crystal is tiny<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/buradabiliyorum.com\/en\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\/#The_other_drawback_Crystal_isnt_as_speedy_as_promised\" >The other drawback: Crystal isn\u2019t as speedy as promised<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E2%80%9CIf_Python_is_too_slow_for_you_Crystal_could_be_your_savior%E2%80%9D\"><\/span>&#8220;If Python is too slow for you, Crystal could be your savior&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<div id=\"article-main-content\">\n                            Learning a new programming language can open your mind in ways you never thought possible. Just like learning a new human language like Spanish or Mandarin, you learn to think with different words and structures.<\/p>\n<p>You tap into the cultures and communities of the speakers and learn how they see the world. It\u2019s enriching, to say the least.<\/p>\n<p>The neat thing about programming languages is that the first one you learn is always the hardest. Once you understand basic structures like if-clauses and for-loops, you\u2019ll see them popping up in many new languages you might learn.<\/p>\n<div class=\"inarticle-wrapper channel-cta\">\n<div class=\"ica-text\">\n<h4><span class=\"ez-toc-section\" id=\"Discover_the_future_of_tech\"><\/span>Discover the future of tech!<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Join us at TNW Conference June 15 &amp; 16 in Amsterdam<\/p>\n<\/div>\n<\/div>\n<p>And, unlike human languages, new programming languages are much faster to learn. They\u2019re more logical and have less words \u2014 or, should I say, commands.<\/p>\n<p>It follows that most programmers and data scientists master more than one programming language.<\/p>\n<p>They might have a main or favorite one. But most software developers I know use at least five languages on a weekly basis, if you count <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">script<\/a>ing languages in.<\/p>\n<p>Most programmers also try to learn a new language every so often.<\/p>\n<p>It comes with the job. Coding means staying curious.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_case_for_Crystal\"><\/span>The case for Crystal<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Crystal, as per its advertisement, is a language that\u2019s fast like C and slick like Ruby.<\/p>\n<p>The part about its slickness is true. It\u2019s compiled and statically typed, which comes with its own advantages and disadvantages. Above all, however, it\u2019s very similar to Ruby in its style.<\/p>\n<p>Personally I\u2019ve never written a larger project in Ruby. But as a fairly experienced Python developer, Crystal code still looks crystal clear!<\/p>\n<p>Here\u2019s an example of a recursive loop that calculates factorials:<\/p>\n<figure class=\"post-image post-mediaBleed aligncenter\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1394059 js-lazy\" alt=\"Factorial calculation in Crystal. Image by author, code taken from Crystal by Example\" width=\"1136\" height=\"1120\" sizes=\"auto, (max-width: 1136px) 100vw, 1136px\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM.png\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM.png 1136w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-213x210.png 213w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-137x135.png 137w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-96x96.png 96w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-274x270.png 274w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-796x785.png 796w\"\/><figcaption><a rel=\"nofollow noopener\" target=\"_blank\" href=\"#\" data-url=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Feditorial.thenextweb.com%2Fhouse-of-talent%2F2023%2F02%2F09%2Fif-python-is-too-slow-for-you-crystal-could-be-your-savior%2F&amp;via=thenextweb&amp;related=thenextweb&amp;text=Check out this picture on: Factorial calculation in Crystal. Image by author, code taken from Crystal by Example\" data-title=\"Share Factorial calculation in Crystal. Image by author, code taken from Crystal by Example on Twitter\" data-width=\"685\" data-height=\"500\" class=\"post-image-share popitup\" title=\"Share Factorial calculation in Crystal. Image by author, code taken from Crystal by Example on Twitter\"><i class=\"icon icon--inline icon--twitter--dark\"\/><\/a>Factorial calculation in Crystal. Image by author, code taken from <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/github.com\/askn\/crystal-by-example\">Crystal by Example<\/a><\/figcaption><noscript><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1394059\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM.png\" alt=\"Factorial calculation in Crystal. Image by author, code taken from Crystal by Example\" width=\"1136\" height=\"1120\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM.png 1136w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-213x210.png 213w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-137x135.png 137w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-96x96.png 96w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-274x270.png 274w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.21.31-PM-796x785.png 796w\"\/><\/noscript><\/figure>\n<p>The command puts sounds a bit weird to people who aren\u2019t accustomed to Ruby. It\u2019s basically a bad-taste version of print in other languages. There are some subtle differences between puts and print but we won\u2019t dive into these here.<\/p>\n<p>Apart from that, this example looks quite pythonic, right?<\/p>\n<p>It\u2019s similar for if-clauses:<\/p>\n<figure class=\"post-image post-mediaBleed aligncenter\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1394060 js-lazy\" alt=\"If-clauses in Crystal. Image by author, code taken from Crystal by Example\" width=\"1198\" height=\"1234\" sizes=\"auto, (max-width: 1198px) 100vw, 1198px\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM.png\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM.png 1198w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-204x210.png 204w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-131x135.png 131w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-262x270.png 262w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-796x820.png 796w\"\/><figcaption><a rel=\"nofollow noopener\" target=\"_blank\" href=\"#\" data-url=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Feditorial.thenextweb.com%2Fhouse-of-talent%2F2023%2F02%2F09%2Fif-python-is-too-slow-for-you-crystal-could-be-your-savior%2F&amp;via=thenextweb&amp;related=thenextweb&amp;text=Check out this picture on: If-clauses in Crystal. Image by author, code taken from Crystal by Example\" data-title=\"Share If-clauses in Crystal. Image by author, code taken from Crystal by Example on Twitter\" data-width=\"685\" data-height=\"500\" class=\"post-image-share popitup\" title=\"Share If-clauses in Crystal. Image by author, code taken from Crystal by Example on Twitter\"><i class=\"icon icon--inline icon--twitter--dark\"\/><\/a>If-clauses in Crystal. Image by author, code taken from <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/github.com\/askn\/crystal-by-example\">Crystal by Example<\/a><\/figcaption><noscript><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1394060\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM.png\" alt=\"If-clauses in Crystal. Image by author, code taken from Crystal by Example\" width=\"1198\" height=\"1234\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM.png 1198w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-204x210.png 204w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-131x135.png 131w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-262x270.png 262w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Screenshot-2023-02-08-at-5.24.05-PM-796x820.png 796w\"\/><\/noscript><\/figure>\n<p>Apart from the funny puts expression that non-Ruby-natives aren\u2019t used to, this is again very readable.<\/p>\n<p><a href=\"https:\/\/buradabiliyorum.com\/en\/category\/general\/\" data-internallinksmanager029f6b8e52c=\"3\" title=\"General\" target=\"_blank\" rel=\"noopener\">General<\/a>ly speaking, the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/medium.com\/@DuroSoft\/why-crystal-is-the-most-promising-programming-language-of-2018-aad669d8344f\">syntax of Crystal is clear<\/a>, even when dealing with larger and more complicated problems.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Static_typing\"><\/span>Static typing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Crystal is statically typed, but you may have noticed there weren\u2019t many type identifiers in the examples above. That\u2019s because Crystal only requires you to specify the type of a variable if it\u2019s ambiguous.<\/p>\n<p>This practice, of course, helps programmers be more productive.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Macros\"><\/span>Macros<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Statically typed languages tend to be finicky around macros. Crystal, however, has a way with them.<\/p>\n<p>As shown in <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/github.com\/sam0x17\/mongo_orm\/blob\/master\/src\/mongo_orm\/fields.cr\">this example<\/a>, you can use a Crystal macro to change a piece of code at compile time through static reasoning, based on the contents of another piece of that same code. Try to do this in C++ and you\u2019ll either fail or need 500+ lines of code.<\/p>\n<p>Or don\u2019t you, you genius? Let me know if I\u2019m wrong\u2026<\/p>\n<p>This does come with some caveats because, as the saying goes, with great power comes great responsibility. Static typing usually reduces some danger, but insanely powerful things (like the ones that Crystal allows) somewhat undo this safeguarding.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"No_Nil-errors\"><\/span>No Nil-errors<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Speaking of safety, Crystal does have additional safeguards elsewhere. Nil is a separate type for the Crystal compiler. So if you\u2019re trying to access a method or container that turns out to be nil, the compiler will warn you. This might result in a failure of compilation, but at least you get to fix the error before you run a potentially large code.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"No_more_dependency_hell\"><\/span>No more dependency hell<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>If you\u2019ve ever handled a large problem in Python, you probably know what <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/medium.com\/geekculture\/want-to-start-a-large-project-keep-away-from-python-af840b6d21c2\">dependency hell<\/a> looks like.<\/p>\n<p>One Python module might depend on another few, and once you\u2019ve imported all the modules you need, you realize that different module versions aren\u2019t compatible. Now you have to figure out which versions to use to make everything fit together, and all of this can take hours when your project is of a certain size.<\/p>\n<p>In Crystal, these modules are called shards, and they get compiled into your binary executable via static linking. I could go into detail about this, but let\u2019s cut the story short: Dependency management is much, much easier this way.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_big_drawback_Crystal_is_tiny\"><\/span>The big drawback: Crystal is tiny<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Crystal <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.infoworld.com\/article\/3212970\/java-and-c-hit-all-time-lows-in-tiobe-language-popularity-index.html\">had a moment<\/a> in 2017 when it jumped from place 60 to 32 on the TIOBE index within just a month. The reasons for this meteoric rise are hard to say, but it\u2019s quite likely that the creators of Crystal did considerable marketing at the time\u00a0and got Ruby programmers curious.<\/p>\n<p>However, Crystal\u2019s moment of fame didn\u2019t last very long. At the time of writing this article, Crystal is nowhere close to the top 50 programming languages on the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.tiobe.com\/tiobe-index\/\">TIOBE index<\/a>.<\/p>\n<p>Because of its early rise in popularity, some people hoped it could see <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/medium.com\/@DuroSoft\/why-crystal-is-the-most-promising-programming-language-of-2018-aad669d8344f\">similar levels of popularity<\/a> as Rust.<\/p>\n<p>This, however, hasn\u2019t materialized.<\/p>\n<p>Programmers have <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/betterprogramming.pub\/a-tale-of-two-engineers-discovering-the-crystal-programming-language-104b1fdbe525\">expressed frustration<\/a> about sample projects or code bases. Also, the documentation seems a little bit incomplete. This turned new programmers off in droves.<\/p>\n<p>And because of this, the Crystal community is so small that you\u2019ll have to wait a while to get help if you\u2019re running into problems. There just aren\u2019t so many answers on StackOverflow, GitHub, and the likes.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_other_drawback_Crystal_isnt_as_speedy_as_promised\"><\/span>The other drawback: Crystal isn\u2019t as speedy as promised<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The creators of Crystal wanted the language to be as fast as C.<\/p>\n<p>This might be true in isolated cases. However, most of the time, Crystal takes about <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/github.com\/the-benchmarker\/web-frameworks\">twice as long to execute<\/a> as C does.<\/p>\n<p>It\u2019s not uncommon for programming languages (or tech companies, for that matter) to have overblown mission statements. And, to be fair, half as fast as C is still pretty fast.<\/p>\n<p>Nevertheless, Crystal significantly under-delivers vis-\u00e0-vis its original promise. It\u2019s so glaringly obvious that I can\u2019t blame the average developer for feeling disappointed.<\/p>\n<p>Famous last words: Crystal is for experienced programmers only<br \/>I love exploring new programming languages, but I prefer well-documented languages with a large and supportive community. Many programmers feel similar.<\/p>\n<p>Crystal has had its shot at mainstream appeal, but overall it has failed in the last few years.<\/p>\n<p>This doesn\u2019t mean that there aren\u2019t some interesting use cases for Crystal. It might be an interesting option for people working with blockchain <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/technology\/\" data-internallinksmanager029f6b8e52c=\"4\" title=\"Technology\" target=\"_blank\" rel=\"noopener\">technology<\/a>. You can create a <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.toptal.com\/blockchain\/crystal-programming-language-tutorial\">fairly powerful cryptocurrency<\/a> with Crystal.<\/p>\n<p>That being said, unless the documentation, marketing, and general community support for Crystal improves, it won\u2019t be a great option for the average blockchain developer either.<\/p>\n<p>If you want to play with a language like Crystal, you\u2019d better bring some experience. Because when you\u2019re faced with a problem, there might be nobody there to help you.<\/p>\n<p><em>This article was written by Ari Joury and was originally published on Medium. You can read it <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/levelup.gitconnected.com\/if-python-is-too-slow-for-you-might-crystal-be-your-savior-b679ae594ffa\">here<\/a>.<\/em>\n                        <\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong>\n<\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/thenextweb.com\/news\/if-python-is-too-slow-for-you-crystal-could-be-your-savior\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;If Python is too slow for you, Crystal could be your savior&#8221; Learning a new programming language can open your mind in ways you never thought possible. Just like learning a new human language like Spanish or Mandarin, you learn to think with different words and structures. You tap into the cultures and communities of&#8230;<\/p>\n","protected":false},"author":1,"featured_media":549734,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/img-cdn.tnwcdn.com\/image\/tnw?filter_last=1&fit=1280,640&url=https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2023\/02\/Add-a-heading-1.jpg&signature=2cb642867787cc3f413a40f1e265fa3c","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-549733","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/549733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=549733"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/549733\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/549734"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=549733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=549733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=549733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}