1
00:00:00,330 --> 00:00:06,240
So you might be asking yourself, why go or go flying, as they sometimes call it, why not some of

2
00:00:06,270 --> 00:00:08,820
the other Web development environments that exist?

3
00:00:08,820 --> 00:00:10,620
And that's a legitimate question.

4
00:00:10,620 --> 00:00:13,400
And there's nothing wrong with lots of other development environments.

5
00:00:13,770 --> 00:00:17,810
But let me give you some of the reasons why Go is such a good language.

6
00:00:18,420 --> 00:00:22,530
One of the most popular development environments right now is called Laravel.

7
00:00:22,530 --> 00:00:23,690
And there's nothing wrong with that.

8
00:00:23,700 --> 00:00:24,030
No.

9
00:00:24,030 --> 00:00:28,770
James has a great runtime that allows you to write your applications in JavaScript, both on the client

10
00:00:28,770 --> 00:00:30,270
side and on the server side.

11
00:00:30,660 --> 00:00:35,070
And there are many other frameworks and environments that you might choose to work with.

12
00:00:35,370 --> 00:00:38,250
But Go has some significant advantages over those.

13
00:00:38,250 --> 00:00:39,090
In my opinion.

14
00:00:39,330 --> 00:00:42,560
To start with, Go is a compiled language.

15
00:00:42,570 --> 00:00:47,970
It's not an interpreted language, for example, is an interpreted language, which means every time

16
00:00:47,970 --> 00:00:54,930
that you hit a page on a site built in AP, it has to load that page into memory, run it through the

17
00:00:54,930 --> 00:01:01,590
interpreter, and then execute the necessary requite or code and send the page to the end user.

18
00:01:01,920 --> 00:01:02,880
Go was compiled.

19
00:01:02,910 --> 00:01:09,870
That makes it much, much faster, in some cases as much as 200 times faster than the same operation

20
00:01:09,870 --> 00:01:10,230
done in.

21
00:01:11,670 --> 00:01:14,000
Also, there are no run times to worry about.

22
00:01:14,010 --> 00:01:19,650
So if you're using HP or you're using Python, well, you need to make sure that you have the correct

23
00:01:19,650 --> 00:01:23,030
version of AP or of Python installed on your server.

24
00:01:23,220 --> 00:01:27,420
You don't have that problem with good because everything is compiled to a single binary file.

25
00:01:27,960 --> 00:01:33,990
All of the third party packages, anything else you might use goes into a single binary file and that

26
00:01:33,990 --> 00:01:35,150
is extremely convenient.

27
00:01:36,000 --> 00:01:42,900
It's also a statically typed language, which means you can't accidentally put a date into a variable

28
00:01:42,900 --> 00:01:45,900
that's meant to hold a an integer, for example.

29
00:01:46,440 --> 00:01:50,010
Now you can do that in dynamically typed languages.

30
00:01:50,010 --> 00:01:55,130
And what that often results in is you have surprises when you run the application.

31
00:01:55,140 --> 00:02:01,500
Things don't work the way you expected because you tried to put one type of data into a variable that's

32
00:02:01,500 --> 00:02:03,450
supposed to hold a different kind of data.

33
00:02:03,810 --> 00:02:04,930
And you can't have that and go.

34
00:02:04,950 --> 00:02:08,820
You can't even compile the application if you're trying to do that sort of thing.

35
00:02:08,820 --> 00:02:11,610
So you don't have any surprises when you launch an application.

36
00:02:12,300 --> 00:02:17,580
It's also sort of object oriented and there's a fair bit of discussion about this on the Internet.

37
00:02:17,970 --> 00:02:23,940
But basically it's a language which has some of the elements of an object oriented programming language

38
00:02:23,940 --> 00:02:28,080
like your Java, but it implements them using something called interfaces.

39
00:02:28,080 --> 00:02:31,170
And we'll talk more about that when we get to the interface as part of the course.

40
00:02:31,440 --> 00:02:33,900
But extremely easy to write go code.

41
00:02:34,950 --> 00:02:37,140
Also, you get concurrency out of the box.

42
00:02:37,140 --> 00:02:42,630
So if I'm running an application on a server that has, for example, eight processors, I can take

43
00:02:42,630 --> 00:02:44,820
advantage of all eight processors.

44
00:02:44,820 --> 00:02:50,430
I can have things running concurrently so I can have my application running and doing multiple things

45
00:02:50,430 --> 00:02:51,450
at the same time.

46
00:02:51,780 --> 00:02:57,710
Whereas JavaScript and P for the most part are single threaded application programming languages.

47
00:02:57,840 --> 00:02:59,570
You can only do one thing at a time.

48
00:02:59,580 --> 00:03:05,400
Now, to be fair, there are ways around that, but it's jumping through an awful lot of hoops to accomplish

49
00:03:05,400 --> 00:03:07,470
something that you get out of the box with.

50
00:03:07,470 --> 00:03:14,400
Go Go can also be compiled for the Mac, for Windows, for Linux and for many other operating systems

51
00:03:14,820 --> 00:03:16,710
without any difficulty whatsoever.

52
00:03:17,160 --> 00:03:23,280
And finally, Go has excellent package management, far superior, in my opinion to say composer in

53
00:03:23,280 --> 00:03:24,240
the world.

54
00:03:24,480 --> 00:03:27,600
And it has excellent testing functionality built into it as well.

55
00:03:27,810 --> 00:03:31,800
And will we get to the testing part of the course and the package management part of the course will

56
00:03:31,800 --> 00:03:35,610
discover just how effective and how well written these things are.

57
00:03:36,060 --> 00:03:40,560
Finally, go is incredibly concise and very, very easy to learn.

58
00:03:40,800 --> 00:03:46,680
And it was built from the beginning, right from the outset, to be aware of the web of the Internet.

59
00:03:46,830 --> 00:03:51,510
And it takes advantage of lots of things that you don't find in other programming languages.

60
00:03:51,510 --> 00:03:58,020
For example, while you can run a Web server in EPEAT, it's not a very good one and you can't have

61
00:03:58,020 --> 00:04:01,380
more than two or three people accessing the site at the same time where it crashes.

62
00:04:01,980 --> 00:04:08,370
Whereas in go you have a Web server built right into the standard library, which is production ready.

63
00:04:08,370 --> 00:04:13,380
It will handle thousands of simultaneous users provided that you have a server that can handle that

64
00:04:13,380 --> 00:04:14,100
kind of traffic.

65
00:04:14,460 --> 00:04:16,680
But it's a great language to work with.

66
00:04:16,680 --> 00:04:19,830
It's easy to learn and I think you're going to enjoy it a great deal.
