{"id":6828,"date":"2020-08-02T12:44:24","date_gmt":"2020-08-02T12:44:24","guid":{"rendered":"https:\/\/algerienetwork.com\/sciences-tec\/?p=6828"},"modified":"2020-08-02T12:44:36","modified_gmt":"2020-08-02T12:44:36","slug":"c-c-c-and-objective-c-what-are-they","status":"publish","type":"post","link":"https:\/\/algerienetwork.com\/sciences-tec\/c-c-c-and-objective-c-what-are-they\/","title":{"rendered":"C, C++, C#, and Objective-C\u2014What Are They"},"content":{"rendered":"\n<p>As you\u2019ve poked around the world of <a rel=\"noreferrer noopener\" href=\"https:\/\/skillcrush.com\/2015\/03\/26\/99-tech-terms\/\" target=\"_blank\">tech terms<\/a> trying to get a handle on all that <a rel=\"noreferrer noopener\" href=\"https:\/\/skillcrush.com\/2017\/05\/22\/super-basic-coding-questions\/\" target=\"_blank\">industry jargon<\/a>, you might have come across reference to a <a rel=\"noreferrer noopener\" href=\"https:\/\/skillcrush.com\/2017\/07\/10\/where-to-start-learning-code\/\" target=\"_blank\">programming language<\/a> called C. Or was it C++? Or maybe it was both? But then didn\u2019t you also see a post somewhere that mentioned C#? And what about that forum topic where someone asked about Objective-C? What exactly IS the difference between C and C++? Or C++ vs C#? Are these all different versions of the same thing? Or are they not even related at all?<\/p>\n\n\n\n<p>The answer is that each of these names\u2014C, C++, C# (the # is pronounced \u201csharp\u201d), and Objective-C\u2014refer to specific computer programming languages. C came first, and the rest were either built off of C or inspired by it. In order to get a clearer picture of what makes each of these languages unique, how they relate to one another, and how they\u2019re used in the tech industry today, I spoke with two tech professionals and got their pro tips on the subject.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"one\">C and Object-Oriented Programming Languages<\/h2>\n\n\n\n<p>To understand the qualities and differences between C++, C#, and Objective-C, you need to start with <a href=\"https:\/\/www.bell-labs.com\/usr\/dmr\/www\/chist.html\" target=\"_blank\" rel=\"noreferrer noopener\">the original C programing language<\/a>. According to Nick Hubben, Senior Creative Technologist at digital marketing agency <a href=\"https:\/\/www.wearegenuine.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Genuine Interactive<\/a> (and husband to Skillcrush Director of Engineering Emily Davis), the C programming language was developed in the early 1970\u2019s, became implemented in many of the first mainframes and microcomputer of the 1980\u2019s, and has since grown into a ubiquitous coding presence, serving as an influence on many programming languages in use today. Hubben describes C as the grandparent of <a href=\"https:\/\/skillcrush.com\/2013\/07\/01\/tech-term-object-oriented-programming\/\" target=\"_blank\" rel=\"noreferrer noopener\">object-oriented programming<\/a>\u2014a class of languages including C++ C#, and Objective-C.<\/p>\n\n\n\n<p>While some types of programming languages function by providing computers with a list of tasks to execute, object-oriented programming languages allow programmers to create virtual objects within their code\u2014each with unique attributes and abilities\u2014that can then interact with one another to perform actions. A simple way to picture it is to think of object-oriented programming as a virtual set of building blocks. Each block is an object that is defined by a specific shape, size, etc., as well as types of behavior (e.g. can it be stacked on top of a different kind of block? Can certain blocks be stacked on top of it? Where is it placed right now?).<\/p>\n\n\n\n<p>Groups of objects can then be given instructions, for instance a group of A blocks can be used to build a tower, while a group of B blocks can be instructed to create steps leading to the top of the tower. The benefit of this object model is that it reduces complexity by mimicking real world building and giving programmers a clear structure to work with. Objects can be isolated and maintained separately from the rest of their code (making it easier to locate and repair bugs), and\u2014once created\u2014they can be easily reused in future programs.<\/p>\n\n\n\n<p>However, Kelly Wilkerson, Co-Founder and Lead Developer at iOS data backup and management company <a href=\"https:\/\/deciphertools.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Decipher Tools<\/a>, says it\u2019s important to note that C is not an object-oriented language itself. With C, Wilkerson says, there are no categories of classes or objects in the code. Instead, C uses something called structs to group values of basic types together. Despite this difference, Wilkerson says, the common denominator between C and it\u2019s object-oriented relatives C++, C#, and Objective-C is that the latter three\u2014while all object-oriented\u2014were designed using a C-style syntax (the set of rules that define correct use of a language). But if the other three C-Family languages are all object-oriented languages based on or inspired by C, what sets them apart from one another?<\/p>\n\n\n\n<p><a href=\"https:\/\/skillcrush.com\/blog\/c-c-c-and-objective-c-2\/#toc\">(back to top)<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"two\">C++ vs C# vs Objective C<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">C++<\/h3>\n\n\n\n<p>Released in 1979, Wilkerson says that C++ was specifically created to add objects and instance methods (object behavior) to the original C language. This was based on the idea that object-oriented programming would be more effective and efficient for large software projects\u2014something that Hubben points to as a reason for C++\u2019s wide adoption in the years since. Hubben says that C++ is the language used to write many current desktop applications (including Adobe programs like Photoshop, Mozilla\u2019s Firefox web browser, and the Microsoft Windows operating system), and\u2014as a result of this large usage base\u2014a vast number of <a href=\"http:\/\/en.cppreference.com\/w\/cpp\/links\/libs\" target=\"_blank\" rel=\"noreferrer noopener\">frameworks and libraries <\/a>(collections of tools used to develop software, websites, or apps) have been built to extend C++ for functions like high-performance graphics, audio digital signal processing, and user interface design. Meanwhile, Wilkerson says that C++\u2019s <a href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/standard-library\/cpp-standard-library-reference\" target=\"_blank\" rel=\"noreferrer noopener\">standard library <\/a>is so huge that beginners can get up and running on projects without having to write a lot of common code themselves, even without venturing into third party libraries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C#<\/h3>\n\n\n\n<p>While C++ was derived directly from the original C language, C# is an object-oriented programming language that was \u201cinspired by\u201d C. First appearing in the year 2000, Hubben says C# is the language used to develop programs within Microsoft\u2019s .NET framework (Microsoft\u2019s proprietary framework for developing Windows software and applications). Although it\u2019s primarily used for software running on the Windows platform, Hubben says C# is not exclusive to it, and is well-suited for general object-oriented programming projects both small and large.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective-C<\/h3>\n\n\n\n<p>Hubben says that Objective-C was developed in the late 1980\u2019s with the aim of building a flexible object-oriented programing language with a focus on reusability of code. Objective-C\u2019s creators added some concepts found in another language called <a href=\"http:\/\/web.cecs.pdx.edu\/~harry\/musings\/SmalltalkOverview.html\" target=\"_blank\" rel=\"noreferrer noopener\">Smalltalk<\/a> , believing this would improve upon C++ as a C-based object-oriented language. Hubben says that Objective-C was adopted by a company called NeXT\u2014Steve Jobs\u2019 computer company he formed before returning to Apple in the late 1980\u2019s\u2014and eventually became the foundation for OSX and iOS (Apple\u2019s desktop and mobile operting systems, respextively). However, Hubben says that in recent years Apple has begun replacing Objective-C with a language called Swift, as <a href=\"https:\/\/www.wired.com\/2014\/06\/apple-swift-language\/\" target=\"_blank\" rel=\"noreferrer noopener\">the company is moving away from C-style languages<\/a>.<\/p>\n\n\n\n<p><a href=\"https:\/\/skillcrush.com\/blog\/c-c-c-and-objective-c-2\/#toc\">(back to top)<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"three\">Are All C-Family Programming Languages (C, C++, C#, and Objective-C) Still Commonly Used?<\/h2>\n\n\n\n<p>Wilkerson says that all four languages (C, C++, C# and Objective-C) are still used in the tech industry (though she mentions\u2014as above\u2014Apple is encouraging programmers to learn Swift instead of Objective-C). In fact, Wilkerson says all four languages can be used cross-purpose. For example, Wilkerson says you could write C\/C++\/C# code for OSX if you really wanted to. \u201cIt\u2019s common to use a mix of these languages for a project,\u201d Swift says. \u201cYou could write an iPhone app in Objective-C but use some C libraries and C functions along the way.\u201d That being said, Wilkerson describes some of the more typical single-use cases of C, C++. and C# as follows:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>C is used for systems development (things like operating systems or firmware\u2014permanent software stored in a computer\u2019s memory), and it\u2019s so widely supported that it\u2019s also a good choice for writing libraries used by multiple programming languages, or programs that need to run on multiple operating systems. For example, I\u2019ve written software that\u2019s a mix of Java and C code for cross-platform projects.<\/p><p>C++ is a great choice for large, performance-sensitive projects that would benefit from object-oriented design (things like high-end video games and graphics programming).<\/p><p>And finally, C# programming is a popular choice for Windows software development, <a href=\"https:\/\/skillcrush.com\/2017\/02\/27\/front-end-back-end-full-stack\/\" target=\"_blank\" rel=\"noreferrer noopener\">back end web services<\/a>, and database-heavy applications.<\/p><\/blockquote>\n\n\n\n<p>Hubben says that he uses C++ and C# on a daily basis in his own work. According to Hubben, C++ is the basis for a popular creative coding framework called <a href=\"http:\/\/openframeworks.cc\/\" target=\"_blank\" rel=\"noreferrer noopener\">openFrameworks<\/a> that allows quick prototyping of graphics as well as support and extensibility for computer-controlled hardware, cameras, <a href=\"https:\/\/www.arduino.cc\/en\/Guide\/Introduction\" target=\"_blank\" rel=\"noreferrer noopener\">microcontrollers<\/a>, lighting, and more. \u201cI use openFrameworks to make fun animations and interactive software for event marketing applications and tradeshows.\u201d Hubben says. In addition to the C++ powered openFrameworks, Hubben also uses game development platform <a href=\"https:\/\/unity3d.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Unity3D<\/a> with C# for projects that require 3D rendering and professional graphics.<\/p>\n\n\n\n<p><a href=\"https:\/\/skillcrush.com\/blog\/c-c-c-and-objective-c-2\/#toc\">(back to top)<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"four\">How Can You Learn C-Family Programming Languages and What Kind of Jobs Require Them?<\/h2>\n\n\n\n<p>Wilkerson was exposed to C and C++ in college, but since her classes didn\u2019t focus on C++ she didn\u2019t leave school proficient in the language. Later on in her career she ended up teaching a C++ unit as part of Introduction to Programming Languages at Arizona State, which forced her to get more comfortable with the language on her own. Meanwhile, she picked up C# when she was interning at Microsoft during grad school, and taught herself Objective-C after she started developing iPhone apps in 2008.<\/p>\n\n\n\n<p>Hubben is self-taught in both C++ and C#. As an <a href=\"https:\/\/www.adobe.com\/devnet\/actionscript\/learning.html\" target=\"_blank\" rel=\"noreferrer noopener\">ActionScript<\/a>\/<a href=\"https:\/\/www.adobe.com\/platform\/\" target=\"_blank\" rel=\"noreferrer noopener\">Flash<\/a> developer he was motivated to learn C++ by wanting to build higher-performance animations and move away from web development. \u201cI learned from trial and error and scouring examples from openFrameworks and <a href=\"https:\/\/libcinder.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cinder<\/a> (another popular creative coding framework for C++),\u201d Hubben says. \u201cThe openFrameworks community, in particular, is extremely giving of their time and knowledge.\u201d With plenty of free tutorials available online from sources like <a href=\"http:\/\/www.learn-c.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Learn-C<\/a>, <a href=\"https:\/\/www.udemy.com\/free-learn-c-tutorial-beginners\/\" target=\"_blank\" rel=\"noreferrer noopener\">Udemy<\/a>, <a href=\"https:\/\/www.sololearn.com\/Course\/CSharp\/\" target=\"_blank\" rel=\"noreferrer noopener\">SoloLearn<\/a>, and <a href=\"https:\/\/www.codeschool.com\/courses\/try-objective-c\" target=\"_blank\" rel=\"noreferrer noopener\">Code School<\/a> (in addition to communities like openFrameworks), the resources are there to start your own familiarization process with the C-Family of languages.<\/p>\n\n\n\n<p>When it comes to the C-Family and practical job application, Wilkerson has the following advice:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>I\u2019d group C and C++ together in saying they are huge if you want to go into <a href=\"https:\/\/www.indeed.com\/q-C++-Game-Programming-jobs.html\" target=\"_blank\" rel=\"noreferrer noopener\">game development<\/a>, <a href=\"https:\/\/www.indeed.com\/q-Operating-System-Developer-jobs.html\" target=\"_blank\" rel=\"noreferrer noopener\">operating systems<\/a> (especially <a href=\"http:\/\/www.opengroup.org\/unix\" target=\"_blank\" rel=\"noreferrer noopener\">Unix<\/a> or <a href=\"https:\/\/www.linux.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Linux<\/a> development), or <a href=\"https:\/\/www.indeed.com\/q-Firmware-Developer-jobs.html\" target=\"_blank\" rel=\"noreferrer noopener\">firmware<\/a>. You\u2019ll also sometimes come across jobs that involve supporting or transitioning older systems that were written in C or C++. And even if you\u2019re not doing C or C++ intensive work, a little bit of C or C++ (and I stress little bit\u2014as in being able to read it) will serve you well in any job, since you\u2019re likely to bump into some C or C++ code or library no matter what project you\u2019re working on.<\/p><p>C# experience will serve you well if you want to work on <a href=\"https:\/\/www.indeed.com\/jobs?q=C%23+Windows+Application+Developer\" target=\"_blank\" rel=\"noreferrer noopener\">Windows software<\/a> or <a href=\"https:\/\/www.indeed.com\/jobs?q=C%23+Backend+Developer\" target=\"_blank\" rel=\"noreferrer noopener\">web development <\/a>(typically backend). There also tend to be <a href=\"https:\/\/www.glassdoor.com\/Job\/jobs.htm?suggestCount=0&amp;suggestChosen=false&amp;clickSource=searchBtn&amp;typedKeyword=c%23+developer&amp;sc.keyword=c%23+developer&amp;locT=&amp;locId=&amp;jobType=\" target=\"_blank\" rel=\"noreferrer noopener\">C# job opportunities<\/a> in business and internal company software.<\/p><p>And if you want to work at Apple (or you want to make iOS or macOS software), you definitely want to learn Objective-C. Again, Apple is transitioning to Swift programming, but to navigate the current world of existing code and third party libraries you\u2019ll want to be able to at least read Objective-C code.<\/p><\/blockquote>\n\n\n\n<p><a href=\"https:\/\/skillcrush.com\/blog\/c-c-c-and-objective-c-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you\u2019ve poked around the world of tech terms trying to get a handle on all that industry jargon, you might have come across reference to a programming language called C. Or was it C++? Or maybe it was both? But then didn\u2019t you also see a post somewhere that mentioned C#? And what about [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6829,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[17,20],"tags":[],"class_list":{"0":"post-6828","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-informatique","8":"category-programmation"},"_links":{"self":[{"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/posts\/6828","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/comments?post=6828"}],"version-history":[{"count":2,"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/posts\/6828\/revisions"}],"predecessor-version":[{"id":6833,"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/posts\/6828\/revisions\/6833"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/media\/6829"}],"wp:attachment":[{"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/media?parent=6828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/categories?post=6828"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/algerienetwork.com\/sciences-tec\/wp-json\/wp\/v2\/tags?post=6828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}