1 00:00:00,160 --> 00:00:03,450 Programming languages are similar to spoken languages, 2 00:00:03,450 --> 00:00:07,760 only instead of the primary function being to converse with humans, 3 00:00:07,760 --> 00:00:12,025 a computer language's primary function is to communicate with a computer or machine. 4 00:00:12,025 --> 00:00:16,185 And similar to spoken and written languages around the world, 5 00:00:16,185 --> 00:00:19,263 there are many programming languages to choose from. 6 00:00:19,263 --> 00:00:22,899 [SOUND] Java, JavaScript, PHP, Python, and 7 00:00:22,899 --> 00:00:27,200 Ruby are just a few popular and widely used languages. 8 00:00:27,200 --> 00:00:31,147 Another one I should point out is [SOUND] Racket, my first programming language. 9 00:00:31,147 --> 00:00:33,323 [SOUND] And even one named Joy. 10 00:00:33,323 --> 00:00:38,975 [SOUND] If you're feeling really jealous right now, if your name is Alice, Babbage, 11 00:00:38,975 --> 00:00:44,782 Chuck, Claire, Dylan, Elan, Franz, George, Hal, Hamilton, Hartmann, Hugo, 12 00:00:44,782 --> 00:00:50,353 Janus, Jean, Julia, Karel, Lisa, Lua, Mary, Max, Maya, Mirah, Miranda, 13 00:00:50,353 --> 00:00:56,004 Moby, Nial, Orwell, Pascal, Perl, Rex, Shakespeare, Tex, Tom, or Yorick, 14 00:00:56,004 --> 00:01:01,776 then you're in good company and there's a programming language with your name on it. 15 00:01:01,776 --> 00:01:07,042 But don't [SOUND] worry, if you're a bigwig, feel utter bliss, euphoria, 16 00:01:07,042 --> 00:01:12,226 hope or kind of jovial, brew your own coffee, own a bistro, or like curry or 17 00:01:12,226 --> 00:01:17,815 corn, if you feel really cool, groovy, nice, or pure, and find Godiva tasty, 18 00:01:17,815 --> 00:01:23,568 think emeralds, opals, and rubies are pretty, fancy falcons, kaleidoscopes, 19 00:01:23,568 --> 00:01:29,077 or squirrels, [SOUND] have ever been to the GAP, scored a goal, think Oz is real, 20 00:01:29,077 --> 00:01:34,829 eaten pizza, are a total powerhouse, love the group Monty Python, had a scratch, 21 00:01:34,829 --> 00:01:40,014 believe in your self, gone for a sail, thrown a snowball, had a cup of tea, 22 00:01:40,014 --> 00:01:45,348 worn a tie, or been to a tutor, there's a programming language for you too. 23 00:01:45,348 --> 00:01:48,654 [SOUND] So, why are there so many programming languages, you ask? 24 00:01:48,654 --> 00:01:53,095 Well, one reason is that from time to time, programmers come across areas for 25 00:01:53,095 --> 00:01:56,865 improvement in a language, and instead of just staying the path, 26 00:01:56,865 --> 00:02:00,210 they deviate in an attempt to improve upon the paths. 27 00:02:00,210 --> 00:02:03,976 [SOUND] One famous example of this was rear admiral Grace Hopper. 28 00:02:03,976 --> 00:02:08,285 She came up with the idea that programming could be independent of the machine. 29 00:02:08,285 --> 00:02:13,545 [SOUND] She did this by creating one of the first programming languages, COBOL, 30 00:02:13,545 --> 00:02:17,090 [SOUND] and a compiler to turn COBOL into machine code. 31 00:02:17,090 --> 00:02:20,334 Even in the 1950s, she knew that the key to opening up 32 00:02:20,334 --> 00:02:24,390 computing to a wider audience was going to be through the development of 33 00:02:24,390 --> 00:02:27,703 programming languages [SOUND] that could be understood and 34 00:02:27,703 --> 00:02:31,775 used by people who were neither mathematicians nor computer experts. 35 00:02:32,955 --> 00:02:35,506 [SOUND] When we say programmer-friendly languages, 36 00:02:35,506 --> 00:02:39,135 we're making the distinction between lower-level machine languages and 37 00:02:39,135 --> 00:02:41,527 higher-level languages, like Ruby or Python. 38 00:02:41,527 --> 00:02:44,656 Machine language is the lowest-level language because it 39 00:02:44,656 --> 00:02:48,670 works directly with the hardware without using a compiler or interpreter. 40 00:02:48,670 --> 00:02:54,045 The instructions written in machine code are unique to its CPU type. 41 00:02:54,045 --> 00:02:57,545 Consequently, different computers use different machine languages. 42 00:02:57,545 --> 00:02:59,725 Machine code runs very quickly and 43 00:02:59,725 --> 00:03:04,325 has a much smaller memory footprint than a higher-level language. 44 00:03:04,325 --> 00:03:08,615 Because they're less abstract than higher-level languages, they also look and 45 00:03:08,615 --> 00:03:13,305 read quite technical and are considered more difficult to use by most programmers. 46 00:03:14,480 --> 00:03:18,336 Higher-level languages, on the other hand, are much more readable because they 47 00:03:18,336 --> 00:03:21,950 are more abstracted from the lower-level machine code. 48 00:03:21,950 --> 00:03:25,920 They use common language in the code to make development more programmer friendly. 49 00:03:25,920 --> 00:03:30,284 Another nice thing about high-level programming languages is 50 00:03:30,284 --> 00:03:34,252 that you can often write it once and run it on many devices. 51 00:03:34,252 --> 00:03:37,177 [SOUND] In order to get from a higher-level language to 52 00:03:37,177 --> 00:03:40,622 a [SOUND] lower-level language that hardware can understand, 53 00:03:40,622 --> 00:03:43,515 you have to perform an operation called compiling. 54 00:03:43,515 --> 00:03:47,252 [SOUND] Compiling is the process of changing a program written in 55 00:03:47,252 --> 00:03:51,198 a higher level language into a binary machine language which can be 56 00:03:51,198 --> 00:03:52,972 understood by the computer. 57 00:03:52,972 --> 00:03:57,132 [SOUND] Grace Hopper's idea of making programming languages more 58 00:03:57,132 --> 00:03:59,713 programming friendly has never faded. 59 00:03:59,713 --> 00:04:04,456 Routinely, when advanced programmers see room for improvement, updates are made and 60 00:04:04,456 --> 00:04:07,260 programming languages emerge and evolve. 61 00:04:07,260 --> 00:04:11,470 Python has taken this lesson to heart, as well as Apple, who recently came out 62 00:04:11,470 --> 00:04:15,880 with Swift, the more programmer-friendly successor to Objective-C. 63 00:04:15,880 --> 00:04:19,250 So which higher-level programming language should you start with? 64 00:04:19,250 --> 00:04:20,050 To answer that, 65 00:04:20,050 --> 00:04:24,020 let's learn a little more about what some of the languages we've been talking about 66 00:04:24,020 --> 00:04:29,250 do and how they work together to build mobile, web, and desktop applications.