<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Abdifatah Abdirahman</title>
    <description>The latest articles on Forem by Abdifatah Abdirahman (@annaati).</description>
    <link>https://forem.com/annaati</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F823705%2F73a594d9-457f-42bf-b4cf-eb4cfa570de9.jpg</url>
      <title>Forem: Abdifatah Abdirahman</title>
      <link>https://forem.com/annaati</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/annaati"/>
    <language>en</language>
    <item>
      <title>The Programming Languages guide Part 0: Intro</title>
      <dc:creator>Abdifatah Abdirahman</dc:creator>
      <pubDate>Sun, 24 Apr 2022 19:03:52 +0000</pubDate>
      <link>https://forem.com/annaati/the-programming-languages-guide-part-0-intro-1569</link>
      <guid>https://forem.com/annaati/the-programming-languages-guide-part-0-intro-1569</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Today's world is fully dependent on Technology. It's tech-driven world, literally Technology has a full impact on almost everything in our daily life. That means One thing the world needs more Developers, people to develop and maintain the fast-base growing Technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  General Overview - &lt;em&gt;definitions,  Terminologies &amp;amp; etc.&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;just like we communicate each others using different languages, so are the Programmers. they communicate with the computers using Programming languages - their way and languages of communicating with machines(computers) for them to develop and/or produce the desired outputs. &lt;/p&gt;

&lt;p&gt;A Programming Language is any set of rules that converts any written instructions(normally Strings) or Graphical elements(in case of &lt;a href="https://en.wikipedia.org/wiki/Visual_programming_language"&gt;Visual programming language&lt;/a&gt; into various kinds of Machine code outputs. they consist of instructions for computers to execute to implement algorithms.  They are the intermediary between the human language and the Machine language(binary - &lt;strong&gt;0&lt;/strong&gt;s and &lt;strong&gt;1&lt;/strong&gt;s)&lt;/p&gt;

&lt;p&gt;A computer program - Is a collection of instructions that performs a specific task&lt;br&gt;
when executed by a computer. there are probably thousands of Programming languages and more  created  continuously so the loop is endless for a programming languages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Types and Categories of Programming languages
&lt;/h3&gt;

&lt;p&gt;Programming Languages can be grouped or categorized in many different forms, let's take a look at some the common forms:&lt;/p&gt;

&lt;p&gt;#### - Low Level Vs High Level&lt;/p&gt;

&lt;p&gt;in terms of levels, Programming languages can be grouped into three categories&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Machine Languages&lt;/li&gt;
&lt;li&gt;Assembly Languages&lt;/li&gt;
&lt;li&gt;High-level Languages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let's discuss them in detail with some examples&lt;/p&gt;

&lt;p&gt;Machine languages are written in binary formats (that is &lt;strong&gt;0&lt;/strong&gt;s and &lt;strong&gt;1&lt;/strong&gt;s) which are understood by the CPU, hence the CPU executes machine languages directly without Compiler or translator which means they are high-performance.&lt;/p&gt;

&lt;p&gt;Assembly languages are written in some-what like-English, its basically commands (normally written in abbreviated form) which are hard for human beings to fully understand and neither does the computer understands at all😀&lt;em&gt;(Ironic right?)&lt;/em&gt;, they are compiled into machine code for execution. these type of languages are mostly used to program embedded systems for low hardware and high-performance.&lt;/p&gt;

&lt;p&gt;Both Machine and Assembly languages are also commonly called as low level Programming languages because they are more &lt;/p&gt;

&lt;p&gt;High-level languages are understood by human beings, they are the most commonly used Programming languages. They are called high level languages mainly for 2 reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;They are easy to understand, infect close to human language, they have to be compiled&lt;br&gt;
or translated into machine code for the Processor to execute them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They don't require  hardware handling such as memory management by the programmer, &lt;a href="https://www.freecodecamp.org/news/a-guide-to-garbage-collection-in-programming/"&gt;garbage collection&lt;/a&gt; handles this task  allowing the programmer to focus on the Program itself.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both Assembly and High-L=level Languages are either compiled or translated at run time.&lt;/p&gt;

&lt;h4&gt;
  
  
  - Compiled Vs Interpreted
&lt;/h4&gt;

&lt;p&gt;The picture below from &lt;a href="https://bournetocode.com/projects/GCSE_Computing_Fundamentals/pages/3-2-9-class_prog_langs.html"&gt;bournetocode.com&lt;/a&gt;  simplifies Translated Vs Compiled Programming Languages&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fp40CGwV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsqafpj2vfvplys6gtqx.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fp40CGwV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsqafpj2vfvplys6gtqx.PNG" alt="Image description" width="593" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what exactly are Compiled and Interpreted languages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compiled Languages&lt;/strong&gt; are converted into machine code that the CPU(Processor) can execute directly. Think of the as pre-translated for the Processor, just like a Booked translated from one Language to another(in this case from high-level or Assembly language to Machine language)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interpreted Languages&lt;/strong&gt; are not converted into machine, instead the program is translated line-by-line to the CPU for execution, think of them as a friend of Yours reading and translating the book for you &lt;/p&gt;

&lt;p&gt;I know it is still confusing &lt;em&gt;so here is  a simple Example to really understand them better&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;assume there's is this Book everyone is talking about how great it is and you really want to read it but unfortunately the Book is written in Arabic and you don't understand Arabic(its just by example🤗). Well too bad for you right?&lt;/p&gt;

&lt;p&gt;Actually there are many ways you can get the content of that book among them are .&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;There is an already Translated version of the Book (in your mother-tongue), so you go ahead and get that version to read it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Or there's a great friend of yours who's really good at Arabic so he translates it for you as he reads it or summarizes it for you after he reads.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The First Example is Compiled You were the CPU, The person who translated it was the Compiler  and the book was the Program, its already translated, you just read it, the content are ready made for you so its faster.&lt;/p&gt;

&lt;p&gt;The Second Example is Interpreted, You were the CPU, Your Friend was the Interpreter And The Book was the Program, It takes some time, it's a process, Your friend conveys the message the way you understand it.&lt;/p&gt;

&lt;p&gt;hope you understood it by now☺&lt;/p&gt;

&lt;h3&gt;
  
  
  What I will be covering in these series of blog posts
&lt;/h3&gt;

&lt;p&gt;Throughout These series of blog posts I will be covering Programming languages guide and for each Programming Language I will mainly focus on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An intro and a brief history&lt;/li&gt;
&lt;li&gt;What it's used for&lt;/li&gt;
&lt;li&gt;Which popular Companies uses it&lt;/li&gt;
&lt;li&gt;Some Popular Softwares/Websites/Apps that uses or built in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's also important to note that the above mentioned points may change, I may add or leave a point(s) for some a programming, it will really depend on the context of The language I'm on the table for that particular post.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;In these series of a Guide to Programming Languages, The Term  &lt;strong&gt;Programming languages&lt;/strong&gt; isn't explicit,  infect I may use it for even a framework or library,  so in this series I mean it anything that can be used to program a program, &lt;em&gt;still confusing huh?&lt;/em&gt;,  What I'm saying is that, the Term will be generalized so don't wonder if I cover things like ASP,  ReactJs or so on throughout this series of blog posts, I am targeting anything is used to a program a computer program&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;That brings us at the end of the Intro of what will be a really long list of blogs and Well it was quite a ride, I really didn't planned it that long way🙂 but I'm proud as a long as its helpful.&lt;/p&gt;

&lt;p&gt;Thanks for reading, hope you found it helpful, don't forget to like and spread it and of course this will be a series of Blog Posts so stay tuned for the journey ahead, my aim is to help out even if it's 1%.&lt;/p&gt;

&lt;p&gt;You can follow me and or hit me up on &lt;a href="https://twitter.com/Annaati17"&gt;Twitter&lt;/a&gt; or  &lt;a href="http://www.linkedin.com/in/Annaati"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>computerscience</category>
      <category>help</category>
    </item>
    <item>
      <title>6 Best Free Resources to Learn Programming</title>
      <dc:creator>Abdifatah Abdirahman</dc:creator>
      <pubDate>Thu, 24 Mar 2022 16:56:09 +0000</pubDate>
      <link>https://forem.com/annaati/5-best-free-resources-to-learn-programming-50id</link>
      <guid>https://forem.com/annaati/5-best-free-resources-to-learn-programming-50id</guid>
      <description>&lt;p&gt;For &lt;em&gt;Code newbies&lt;/em&gt;, intermediates or event seasoned developers who want to refresh Their Programming Skills or learn a new a language, a key decision (after deciding what to Learn) is to choose wisely where to learn, e.i Resource. There are over thousands if not millions of free resources out there which is overwhelming, especially for Code newbies. In this short blog I will share with you 5 of the best resources where you can learn Programming absolutely for free, specially Web development, so let's get started!.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/"&gt;&lt;strong&gt;1. Freecodecamp&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Founded by &lt;strong&gt;Quincy Larson&lt;/strong&gt; in 2014, &lt;a href="https://www.freecodecamp.org/"&gt;freeCodeCamp&lt;/a&gt; is Open source organization where thousands of interactive coding, Articles and videos lessons all publicly available which are well structured. It’s supported and contributed by developers from all over the world.&lt;/p&gt;

&lt;p&gt;As by themselves, there are around 40, 000+ graduates who landed jobs in Tech giant companies like Microsoft, Google, Apple, Amazon and etc. You might have seen some Tech YouTubers who proudly claim they went through The FreedCodeCamp curriculum.&lt;/p&gt;

&lt;p&gt;To name a few, You can earn a free and verified certificate in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive Web Design&lt;/li&gt;
&lt;li&gt;JavaScript algorithms &amp;amp; Data structures&lt;/li&gt;
&lt;li&gt;Information security&lt;/li&gt;
&lt;li&gt;Machine Learning with Python&lt;/li&gt;
&lt;li&gt;Backend and APIs&lt;/li&gt;
&lt;li&gt;Data analytics with python&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.theodinproject.com/"&gt;2. The Odin Project&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the best of it’s kind, &lt;a href="https://www.theodinproject.com/"&gt;the Odin Project&lt;/a&gt; is a complete Curriculum consisting of a foundation and Two complete full paths in Full-stack JavaScript (NodeJS as you may have guessed) and Full-stack Ruby on Rails. It’s supported and contributed by a passionate Open source community and it is updated regularly.&lt;/p&gt;

&lt;p&gt;The Odin Projects is focused on Web development but at the end of the day what really matters is the concept of programming, once you are comfortable with one, it will be a lot easier to learn others. what makes interesting is that if you happen to be using Windows and wanted to switch to Linux, this is your go to. Topics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Ruby &amp;amp; Ruby on Rails&lt;/li&gt;
&lt;li&gt;NodeJS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't worry Topics are covered in beginner, Intermediate to advanced manner and at the end it even includes preparing for your job search and getting hired.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://pll.harvard.edu/course/cs50-introduction-computer-science?delta=0"&gt;3. CS-50 by Harvard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We all aspire in Learning at &lt;em&gt;Top Universities like Harvard University&lt;/em&gt; but simply most of us can’t for many reasons, if you think/believe so hold on. You don't need to get in-campus or pay huge amount to learn and earn certificate at Harvard. CS-50's &lt;strong&gt;Introduction to Computer Science&lt;/strong&gt; is a self-based 11-week long curriculum by Harvard taught by &lt;strong&gt;David J. Malan&lt;/strong&gt; &lt;em&gt;a CS-50 graduate himself&lt;/em&gt;, &lt;strong&gt;Doug Lloyd&lt;/strong&gt; and &lt;strong&gt;Brian Yu&lt;/strong&gt;. It's been around since 2007 and it involved over the years.&lt;/p&gt;

&lt;p&gt;Topics range from Web development like HTML, CSS, JavaScript, to Data Structures and Algorithms, general Programming knowledge eg in Python and it's now even expended into areas like Business Professionals, lawyers, AI, Game Development, Mobile App Development, and CS-50 Beyond which dives a bit deeper into Web Dev.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.frontendmentor.io/"&gt;4. Front-end Mentor&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After learning and familiarizing yourself with a concept/language the next step is to challenge yourself and implement what you have learnt but where do you get project ideas? What will your Project design look-like? Or what features will it have? all of these questions and many others are a major part of why so one may get stack in tutorial hell. if you happen to be good a design you may make your own even though its time consuming or you may look up into platforms like Behence, Dripple, Pinterest or etc. for inspiration.&lt;/p&gt;

&lt;p&gt;But Even better and guess what, Well luckily enough you don’t have worry or bear all that burden. There are so many resource out there and &lt;a href="https://www.frontendmentor.io/"&gt;Front-end mentor&lt;/a&gt; is one of the best out, if not the best. You get well designed and document ready-to-be-implemented Prototypes for free, all you need to worry is to implement and what makes even better is that you can submit the challenge for review and get feedback on what to improve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. &lt;a href="https://www.hackerrank.com/"&gt;HackerRank&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In your Learning to code journey, not only do you need to build projects to show case your skills but you also need to solve Technical problems to improve your Problem-solving skills and ace your interview if you want to land a job. Problem solving is a vital part of software Development/Engineering and you must practice a lot.&lt;/p&gt;

&lt;p&gt;HackerRank allows you to Solve a wide range of Computer Science Problems of different domains like Algorithms, SQL, Mathematics, AI, and more to level up your problem-solving skills, submit it and then improve or see how others solved the same problem. They also provide the chance to submit Applications and apply jobs by solve Company-sponsored coding challenges.&lt;/p&gt;

&lt;p&gt;There are also similar websites you may want to check out like &lt;a href="https://interview.leetcode.com/"&gt;LeetCode&lt;/a&gt;, &lt;a href="https://www.codechef.com/"&gt;CodeChef&lt;/a&gt;, &lt;a href="https://www.codewars.com/"&gt;CodeWars&lt;/a&gt;, &lt;a href="https://coderbyte.com/"&gt;Coderbyte&lt;/a&gt;, and so on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/"&gt;6. MDN Web Docs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Human beings tend to forget and it’s perfectly fine, after all we are not robots, we can’t memorize and remember everything which means it’s certain that sometimes you may get stack in a concept. That happens to every developer/Learner out there. The best part is that it takes a quick google to find an online solution and &lt;a href="https://developer.mozilla.org/en-US/"&gt;MDN Web Docs&lt;/a&gt; is the Place to find concepts break-down in simple and easy to understand manner with example.&lt;/p&gt;

&lt;p&gt;Referred as Resources for Developers by developers, &lt;a href="https://developer.mozilla.org/en-US/"&gt;MDN Web Docs&lt;/a&gt; was started in 2005 by &lt;strong&gt;Mozilla&lt;/strong&gt; since then in 2017 &lt;strong&gt;Microsoft&lt;/strong&gt;, &lt;strong&gt;Google&lt;/strong&gt;, and &lt;strong&gt;Samsung&lt;/strong&gt; moved all their documentation to MDN Web Docs shutting down their own documentations. It’s maintained by Google and Mozilla Employees alongside Other volunteers consisting of developers and Technical writers.&lt;/p&gt;

&lt;p&gt;Topics are mostly Web Development related and they include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building Blogs of Web dev(HTML5, CSS, JavaScript) &lt;/li&gt;
&lt;li&gt;Frontend and Backend Communication lines (Web APIs, HTTPs)&lt;/li&gt;
&lt;li&gt;Backend (Django, NodeJS)&lt;/li&gt;
&lt;li&gt;Web Extensions&lt;/li&gt;
&lt;li&gt;Guides and Learning Area(HTML, CSS, JavaScript, Accessibility and much more)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are surely a lot of great Websites out there, but its always best to experiment it out at first, decide what works for You and select it wisely. &lt;/p&gt;

&lt;p&gt;That is it for this short blog.&lt;br&gt;
Thanks for reading, hope you found it valuable. Share with otehrs &amp;amp; let me know if there's something elese you have to say.&lt;/p&gt;

&lt;p&gt;You can find me on &lt;a href="https://twitter.com/Annaati17"&gt;Twitter&lt;/a&gt; and &lt;a href="http://www.linkedin.com/in/Annaati"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>codenewbie</category>
      <category>programming</category>
      <category>help</category>
    </item>
  </channel>
</rss>
