Every Programming Language in 15 Minutes

Поделиться
HTML-код
  • Опубликовано: 17 ноя 2024

Комментарии • 207

  • @naikrovek
    @naikrovek 5 лет назад +27

    I fucking LOVE this guy. no lengthy (or, any) title card or intro music, not constantly saying "you guys" and talking down to the audience, no "i'll see you in the next video" and so on. In short: no bullshit. This is what all youtube channels should be. information without bullshit wrapping it and inflating the length (and therefore wasting my time as a viewer.)

  • @TheEVEInspiration
    @TheEVEInspiration 5 лет назад +124

    Bonus points for stating the fact that programming is about data at the start.
    Many programmers seem to lose track of this when they get to work for real.

    • @Aereto
      @Aereto 5 лет назад +7

      In the world of programming, that is what software engineering meant: make the automated means to receive, manipulate, and send data according to the intended design goals.

    • @AnonymousAccount514
      @AnonymousAccount514 5 лет назад +3

      absolutely...hell, this is a good baseline for an experienced programmer...especially when starting a new framework or language...before you say i don't have any experience with that....refer to this.

    • @Bonniebelle_00__
      @Bonniebelle_00__ 4 года назад +1

      @@Aereto great :) inference

    • @Bonniebelle_00__
      @Bonniebelle_00__ 4 года назад +1

      @@AnonymousAccount514 theoretically

  • @zikomo8913
    @zikomo8913 5 лет назад +53

    This is my favourite CS RUclips channel by far, the style, the content, everything is brilliant.
    Thanks a lot for this kind of diverse content Brian!

    • @Bonniebelle_00__
      @Bonniebelle_00__ 4 года назад +1

      Wow:) fanboy here🤣

    • @zikomo8913
      @zikomo8913 4 года назад +1

      @@Bonniebelle_00__ yep, his videos helped me get some overview of many different topics while I was a beginner.

    • @alexandrubragari1537
      @alexandrubragari1537 4 года назад

      @@zikomo8913 what your avatar is about?

    • @zikomo8913
      @zikomo8913 4 года назад +1

      @@alexandrubragari1537 An AI in the Halo games universe.

  • @aoeu256
    @aoeu256 5 лет назад +48

    This is true only for Imperative languages... Functional and Constraint/Logic are kinda different...

    • @Bonniebelle_00__
      @Bonniebelle_00__ 4 года назад +2

      How would you describe them imperatively

    • @MatheusAugustoGames
      @MatheusAugustoGames 4 года назад +4

      @@Bonniebelle_00__ It's not really easy. Of course, the languages eventually get compiled to machine code, which is imperative, but they are over so many layers of abstraction that it changes the way you think about the programs.

    • @thomashanson3476
      @thomashanson3476 3 года назад

      Matheus Augusto functional programming produce a dynamic field of conditional loops containing operations from static code while imperative languages only have the capacity to represent a single collection of conditional loops at once

    • @OggerFN
      @OggerFN 3 года назад +2

      functional programming languages work mostly the same way but limit how you can do things.
      These types of videos are for C-like languages or 'C-inspired' languages.

    • @ngruhn
      @ngruhn 2 года назад

      I would also give SQL an honorable mention. It’s yet another, pretty unique, approach.

  • @baconsledge
    @baconsledge 5 лет назад +13

    Excellent! Brian’s explanations are uncannily concise and unobfuscated.

  • @AnonymousAccount514
    @AnonymousAccount514 5 лет назад +3

    beautiful...this is perfect for beginners...it will especially clear up the constant "what language do i start with?" question. I always get a lot of push back when i tell them it doesn't matter...but this clarifies it perfectly

  • @timtim9o5
    @timtim9o5 5 лет назад +30

    Clear and concise. A good artifact that will surely prove helpful to many students.
    Thanks Brian.

  • @112BALAGE112
    @112BALAGE112 5 лет назад +18

    Important to note: this is only a description of imperative programming. There are many languages that work in completely different ways (for example declarative programming).

    • @herrfriberger5
      @herrfriberger5 5 лет назад +5

      Both logic programming (like Prolog) and functional programming have been called declarative, despite being quite different. There are also declarative elements in modern imperative languages.

  • @kensiktv6495
    @kensiktv6495 5 лет назад +40

    Glad to see you are uploading these great videos, keep it up.

  • @MrSunrise-
    @MrSunrise- 3 года назад +4

    Ladder logic programming (used on industrial controllers) is entirely about state😛. Attempting to understand it as data transformation leads to headaches and not much else.

    • @MrSunrise-
      @MrSunrise- 11 месяцев назад

      Very true, and a direct consequence of its origins in relay logic. This hasn't stopped vendors from adding data-oriented features, but the essence of ladder logic is state.

  • @josephgaviota
    @josephgaviota 4 года назад +1

    I found this an excellent summary of what is going on. I shall share this with my programming relatives.

  • @victorespinoza6210
    @victorespinoza6210 5 лет назад +1

    Great video and now I'm down the rabbit hole of your channel. I love the way you breakdown the information in your videos.

  • @bocckoka
    @bocckoka 5 лет назад +24

    mostly true for procedural languages, less so for some functional ones. they only have some of those things (variables, for loops) as syntactical exceptions

    • @jakejakeboom
      @jakejakeboom 5 лет назад +1

      Most functional languages have variables (immutable variables you could argue are not variables), and most have some sort of looping construct beyond map and reduce. So I think he's still being general enough.

    • @canadiandave8177
      @canadiandave8177 5 лет назад

      Not worth mentioning, functional languages probably have less than ~1% of the usage of procedural, according to stackoverflow recent stats.

    • @Fazz321
      @Fazz321 5 лет назад +1

      Well, if I have to complain about somthing, I would bring "if" and "while" statement, wich is basically "goto" constructions. But well, it would be far less understandable if he was using that.
      Also there is languages which don't allow you to use functions, and there is algebraic languages wich alows you to compute mathematical equations.
      But well, it's just complaining over nothing. Good video.

    • @monke5100
      @monke5100 5 лет назад +2

      Don't forget about declarative languages like prolog

    • @noergelstein
      @noergelstein 5 лет назад

      @Sydney Bean
      Actually, you don't need loops or recursion built into your language to express repetition. If you have higher order functions (you can pass functions as parameters), you can use for example the Y-combinator to simulate recursion, and using recursion you can simulate loops.

  • @dan9948
    @dan9948 5 лет назад +19

    Great explanation, but misleading title. I thought I was going to get a quick sample of different programming languages: static imperative (C/Java), dynamic imperative (python), static functional (Haskell), dynamic functional (Lisp), declarative (HTML), constraint-based (Prolog), object oriented (SmallTalk), etc.

    • @Bonniebelle_00__
      @Bonniebelle_00__ 4 года назад

      I'm copying this for some research if you don't mind sir?

  • @Vaaaaadim
    @Vaaaaadim 5 лет назад +7

    Woah there, 2:04, I'm pretty sure functional languages don't have loops, though of course one is able to mimic the functionality of a loop.

    • @mskiptr
      @mskiptr Год назад

      Purely functional languages just don't have the concept of time built into them.
      But indeed, you can model time and state with appropriate data structures and by appropriately shaping the evaluation (i.e. using recursive definitions)

  • @Juanbaez_
    @Juanbaez_ 5 лет назад +4

    Wow, I have 3 years on computer science. And you have tough me more then the University ever did. Thanks!

    • @MaoDev
      @MaoDev 4 года назад +2

      did you really not even learn this in university? That's insane

    • @simplytom1213
      @simplytom1213 2 года назад

      @@MaoDev You'd be surprised by how wacky university can be.

    • @MaoDev
      @MaoDev 2 года назад

      @@simplytom1213 jesus

    • @simplytom1213
      @simplytom1213 2 года назад +2

      @@MaoDev I sometimes don't know what people learn in Computer Science. I sometimes ask people who completed Computer Science what they learnt, and they said they don't know.

  • @tonyguerich9854
    @tonyguerich9854 3 года назад +2

    A lot of your material reminds me of the Gane and Sarsen Structured approach. I learned this early in my career and still think this way first when approaching a problem

  • @matrikater
    @matrikater 3 года назад +1

    i wish i had this when i was learning

  • @033muil
    @033muil 5 лет назад +16

    You're really devoted to thinking about programming languages in a fundamental way. You have a thorough, all-encompassing understanding of their strengths and flaws. Your ability to reason about related concepts in an abstract way is quite impressive. Have you ever considered designing and producing your own programming language? I'm genuinely curious what the result would be given enough money and manpower.

  • @dan9948
    @dan9948 5 лет назад +9

    Probably one of the best & concise explanations a program! But very far from "all programming languages", as it is *very* specific to programming in a C-style imperative language.

  • @ArkenGAMES
    @ArkenGAMES 2 года назад

    Just stumbled upon this video, and dammn its good.
    Everything organized and explained perfectly, thanks for the vid, u got my sub.

  • @RobbieHatley
    @RobbieHatley 2 года назад

    Interesting and useful, but does leave out one important mechanism: most languages have a way for variables in functions to retain their values between calls. For example, in Perl one uses "state", and in C and C++ one uses "static". So if you type "static int Fred = 7;" in a C function (or "state $Fred = 7;" in a Perl sub), the variable Fred will be initialized to 7 only on the first call to that function during that run of that program; for all subsequent calls, Fred will _not_ be initialized to 7, but will retain whatever value it had at the end of the last call (say, 42, or -17).

    • @GeorgeTsiros
      @GeorgeTsiros 2 года назад +1

      that's just convenience syntax
      (some say "syntactic sugar")

  • @asdfghyter
    @asdfghyter 2 года назад +3

    Not quite every programming langue though. For example, most of these things are false for prolog, since it has a completely different execution model and predicates instead of functions. Instead of having a return value, the inputs of a predicate are unified to satisfy the predicate and the code will backtrack otherwise. E.g. calling append([1,2,3], [4,5,6], X) will make X = [1,2,3,4,5,6], but append([1,2,3], X, [1,2,3,4,5,6]) will make X=[4,5,6].
    The only thing from this presentation that is true about prolog is that it has input and output.

  • @filker0
    @filker0 5 лет назад +3

    I generally agree with most of your opinions about the topics you cover on your channel, but there are a few places where we diverge.
    In this case, you may simply be over simplifying for the sake of the intended audience, but I think that some things are important for a beginner to be cognizant of:
    - A program's output may be the control of other programs. In some cases, a programs only purpose is to exist (the trivial idle process, for example).
    - Not all programming languages support functions, and some languages distinguish between procedures from functions.
    - Not all programming languages provide explicit loop constructs (while, for); some provide only conditions (if) and explicit branches (goto).
    - Parallel programming languages have concurrent functions where the caller continues execution until it uses the result of the function call, at which point it waits for the value to be available before continuing.
    - Not all languages support strings as a basic data type.
    - Not all programs are hosted by an operating system. Even some programs that are hosted (especially those hosted by real-time and/or embedded kernels) do their own I/O. The kernel itself is one or more programs. When you introduce hypervisors, this gets even more fuzzy.
    - The convention of "main" being the name of a procedure that is automatically invoked when a program is started is not universal. In some languages, it is immediate code (statements outside any named procedure) that is executed, in other cases the entry point is specified either at build or execution time.
    - There are languages that are not procedural or sequential, such as VHDL. SQL also falls into this realm. Regular expressions also.
    I wouldn't bring this up except that the video implies that the assertions are universal. The most common languages beginners are likely to encounter, and the programs they are likely to write, do exhibit the characteristics you list.

    • @brazni
      @brazni 5 лет назад +1

      good points, although VHDL isn't a programming language it is a hardware describing languages. you can also make the case that SQL and regex isn't programming languages in the conventional sense of the words. I think this illustrates the underlying issue of making a video likes this, there are a lot of grey zones that might, or might not be, relevant to a beginner.

    • @mskiptr
      @mskiptr Год назад

      Logic and functional languages also diverge from his description pretty quickly. And one cannot argue they aren't 'programming'

  • @PKAnon
    @PKAnon 5 лет назад +6

    All of your videos are excellent, please make more!

  • @cktken3336
    @cktken3336 2 года назад +1

    Actually the variables the way you talked about them and looping isn’t universal. Purely functional languages / declarative languages don’t allow for or while loops, and their definition of variable is actually strict equality in the way that math you talked about works, not assignment to a location in memory.
    For example in Haskell, a = 42 means “a is another way to write 42, and this will always be true for everything in a’s scope”. b = getStrLn means that “b is another way to write the ‘get a line of input’” function, NOT “assign the result of that function to b”.

  • @clnw
    @clnw 2 года назад

    Thanks Brian!

  • @derekfrost8991
    @derekfrost8991 5 лет назад

    @andré Artus I didn't say I use it at all. I prefer immutability to functional programming, which can be implemented in any language, it's just bad for performance. My point is just that it's called 'every programming language' and then, oops these ones don't count..

  • @FlashManinSpace
    @FlashManinSpace 5 лет назад +27

    Prolog isn't anything like this 😳

    • @aloveofsurf
      @aloveofsurf 5 лет назад +5

      You provide a valid counterexample. The title is not exact. We forget numerical applications if we suppose that even programs are exact. If Prolog was the only exception then he speaks with great precision because 1 - (1 prolog divided by the number of programming languages) is very nearly 1.
      An operator needs to account for the behaviors of tools to ensure work is adequate. He is far less exact than off by one counterexample when he says variables change state when many functional languages hold variables immutable. There are probably many more hasty generalizations than that. It feels as though Brian Will is trolling for pedants and we hooked ourselves...
      He provides a nice abstraction when he prioritizes the concepts of data and their structures over details of implementation. I applaud this example of how being a pedant can obscure the value in a message: when I focus on finding a fight then I perceive less of what's right.

    • @ArneBab
      @ArneBab 5 лет назад +1

      ​@Sungindra SetiawanAnd there are implementations of logical languages you can embed straight into lisp. A really minimal example is μKanren: webyrd.net/scheme-2013/papers/HemannMuKanren2013.pdf + arxiv.org/pdf/1701.00633.pdf - find more on minikanren.org/

    • @campsitez2355
      @campsitez2355 5 лет назад

      if you skip "PROLOG" you're probably not a "pro" and should cut your gdam ponytail off.

  • @rursus8354
    @rursus8354 5 лет назад +9

    That doesn't cover assembly.

    • @herrfriberger5
      @herrfriberger5 5 лет назад +6

      This does apply to assembly, for the most part, although less so to machine code.

    • @rursus8354
      @rursus8354 5 лет назад +4

      ​@RebornOccasionally. Foremost my pupils (that program microcontrollers) need to know how to compile assembly and upload the hex code to the MCU:s. If you are programming a PC, assembly is very unlikely, then your Java or Python may suffice, but anyone programming microcontrollers need to know it, since optimizations, speed and interrupt control might be needed for certain applications.

    • @Raattis
      @Raattis 5 лет назад +1

      I'm curious, which part off assembly isn't covered? I was thinking the same thing at first but when I thought about it more I changed my mind. For example, there are no explicit loop statements but there are loops, etc.

    • @KayOScode
      @KayOScode 4 года назад

      @Reborn ive had to write assemblers and emulators in assembly

  • @JR-mk6ow
    @JR-mk6ow 5 лет назад +27

    I saw this title and I was expecting a bunch of memes lol. Not a informative video

  • @judasseispuertos4163
    @judasseispuertos4163 2 года назад

    Notes to take from here:
    The data you choose to program on is as important as the methods by which you program.

    • @researcher4good
      @researcher4good 2 года назад

      My favorite quote from Linus: "Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

  • @mskiptr
    @mskiptr Год назад

    I was with you till 2:14
    Purely functional languages do not natively have variables nor do they have loops and stuff like that.
    (kinda like Excel)
    I don't know that much about logic programming languages, but I'd expect them to diverge from your description even quicker

    • @mskiptr
      @mskiptr Год назад

      6:18 That's a big oof for any functional language.
      There, statements aren't really that important. You deal primarily with expressions and assignments (naming your values). Instead of execution you have evaluation.

  • @zeyadjy7229
    @zeyadjy7229 5 лет назад +1

    amazing as usual

  • @zeyadjy7229
    @zeyadjy7229 5 лет назад +1

    This clears up may things for me thank you very much, mr Brian. Can you do a video on an example program lifetime how does it executes and what's going on beneath the hud

  • @jonasfelix7700
    @jonasfelix7700 5 лет назад

    Thank you! Great content.

  • @LukaSauperl
    @LukaSauperl 5 лет назад +2

    I wonder if none programmers will be able to understand this

    • @Manquia
      @Manquia 5 лет назад +6

      If each section of the video was isolated off and the viewer gave a lot of time and examples in the language they are using, then it is probably useful.
      This format is likely useless for most people. I remember watching similar videos when I started programming and they didn't really help me that much. I learned vocabulary, but no the way to apply it to my learning. My teaching experience in K-12 further pushes me to think that this is completely useless to the most student, but I don't have a sample size to prove it.
      This is a nice video and I don't want to dunk well-produced programming content. However, I don't know who this is for?

    • @LukaSauperl
      @LukaSauperl 5 лет назад +2

      @@Manquia Yeah... As a person who's in a teaching position for programming, this video isn't very useful, as it might confuse the students rather then teach them the fundamentals.
      The problem with students (as far as I've noticed) is that they don't have patience to learn programming, because let's be fair, programming takes time, and A LOT of students are scared or don't know how to use Google...
      (
      I had one of my students write code like this (JS)
      document.write += "bla bla bla";
      And I, of course, asked him if he googled what he wrote, and he said that he didn't know what to google...
      So I did what I had to do and I googled document.write, took a screenshot, then pressed the first link and again took a screenshot...
      I know that this might seem a bit belittling, but I don't know who else to show the students that google is the answer for most questions.
      He then said that he wanted to print a variable, but that he doesn't know how... (and the game begins anew)
      (For those wondering the answer is:
      document.write variable,
      then click the first link.)
      )
      As to who is it for?
      I think it's for us the programmers for two reasons:
      - To have fun and laugh a bit,
      - To in a way revise the basics, the pillars on which most languages stand.

    • @zikomo8913
      @zikomo8913 5 лет назад +2

      I do find Brian's videos very useful, like this one, some of his videos teach computer science theory in an introductory way, which perfectly serves my need for such content as I'm self studying CS.
      -This content helps me to see the big picture. I can always read books to learn how to program xyz, but CS theory is not only important but it's a plus to know on a general level what I'm actually doing!
      -For a long time I wondered what OOP was, and I learnt it on a conceptual level in just 30 mins from Brian' video on same, actually made notes, this way, I can always go ahead and dive deep later into topics from actual/rigorous resources.

  • @FreeScience
    @FreeScience 5 лет назад +2

    It should probably have said "Most programming languages" or "every programming language has at least one of" for the list at 2:02. I know that this should be as non convoluted and without explaining every caveat, but It's probably good in the vein of this video to prepare the viewer for the different paradigms.

  • @lilypadsy
    @lilypadsy 5 лет назад +1

    is codeschool.org dead? any plans to put it back up?

  • @MyAce8
    @MyAce8 5 лет назад +6

    *every procedural programming language.

  • @jeyizumi
    @jeyizumi 3 года назад

    You are amazing...

  • @sjmom5119
    @sjmom5119 3 года назад

    you can have code that is excuted outside of a function

  • @u9vata
    @u9vata 10 месяцев назад

    Its sad there is no mention of FORTH whatsoever - or any of the concatenative style languages...

  • @Mr.Nichan
    @Mr.Nichan 2 года назад

    11:29 Is that true? I thought that's what "functional programming" meant. Have I been programming in Python wrong this whole time, since I only ever define functions when I expect to have to reuse the code in more than one part of the program?
    EDIT: I've just realized that this probably has to do with what kind of programs you write. Most of the programs I've written as saved files (rather than just defining them in the shell for one-off use) have been little games, where you input whatever data you want it to use, AFTER the program starts, but, when you write programs for handling data, or programs designed to be run by other programs, it's natural to run the program as a function, or, in my experience in Python, to import a function from the .py file and use that (although, if you only want to do one or a few things with the program, you can just hard-code in the path of the file you want the program to take data from, and change it in the code if you want to process something else).

    • @PWRR
      @PWRR 2 года назад

      There is no 'wrong programming' if it achieves the objective ***(1).
      I view the 'functional programming paradigm' definition to be: a function doing just one thing and sending functions/output to the input of other functions to achieve the desired objective.
      Last year, I used C++ Geospatial Data Abstraction Library (GDAL) libraries because they did what I needed to do with data I was receiving from various sources. This year I am using QGIS's Python console to process data. I could use the C++ QGIS API but I would then need to build plugins ***(2) so other non-programmers could use them or standalone applications (or VBA plugins for Excel - been there, done that and would prefer not to do again as some people viewed it as 'magic' and were very suspicious).
      ***
      (1) Please spare me Machiavellian comparisons of people that are incorrectly programmed and/or behave.
      (2) Processing functions don't always implement the advertised functions, parameters or output nor do they fully cover the QGIS API.

    • @Mr.Nichan
      @Mr.Nichan 2 года назад

      @@PWRROne point is that I usually do define functions before commands that handle input and output, and you could define commands I give outside of any function as an implicit "function", if you were used to thinking if things that way. I've just started my first formal programming class, and they're teaching C++ with a textbook, and I notice that, though they're definitely not teaching functional programming (i.e. pure functions) they still always want me to define a main function and put whatever I want done in there, and it's just called whether I want it to be or not. I notice Python error messages always talk about everything happening in a __main__ (RUclips is turning the outermost underscores into italics, unfortunately.) function, or whatever it's called, so I'm guessing the interpreter/compiler written in C is either using __main__ to interpret, or is sticking some or all of the Python program into a __main__ function, and I'm guessing programmers from the C tradition view Python as just making the main function implicit, rather than C++ as wanting you to you to stick your non-function code into a function for no apparent reason.

    • @PWRR
      @PWRR 2 года назад

      @@Mr.Nichan Aye... You may want to take a look at this RUclips video by Corey Schafer:
      ruclips.net/video/sugvnHA7ElY/видео.html
      He also has a play list on Python that is excellent. It ranges from the basics to the 'probably never use' advanced stuff and includes practical application of numerous Python libraries along the way.
      Word of warning - I have been programming in countless languages since the 70's and learned that 'Just because you can, doesn't mean you should.' In other words, if someone can't explain 'why' I would want to or need to do something in code, I probably shouldn't be doing it.

  • @codebreakeruk6533
    @codebreakeruk6533 5 лет назад

    Hi Brian, not sure how I can contact you so figured I'd drop a comment here.
    I was wondering if you'd be able to do a video (if not done already) on how a beginner finds out how to do something without copying code fromt eh internet. For example, we have the programming language's documentation, but that's only specific to teh language, it doesn't tell us how to make an IRC client with it, how would a beignner know how to do IRC?
    We have RFCs, which I think a lot of beginner programmers don't know about, and although they can be more complex in some regards, they are important. And in my experience, university doesn't teach about RFC and other resources to figure out 'what to do'.
    I watched a video where someone was making a bot for Twitch - and the person knew how to make a TCP/IP server from scratch - how does someone go from learning a language, to learning how to do something like that with that laanguage? - if that helps you understand my question.

    • @mayaforte2
      @mayaforte2 5 лет назад +1

      I found your question to be very interesting. I think most older professionals started out with electronics and courses in mathematics and/or physics. Computer science courses didn't really exist back then. Books on UDP, TCP and IP are readily available and have been for a long time. I suppose you would have once purchased a book which would talk about the details of the thing you wish to understand. Your knowledge of RFCs is very helpful in this regard as you rightly point out. I suppose you'd look at the RFC for TCP, etc. But the paradigm of client/server architecture is something that I believe is taught at universities so perhaps that would have given you a fundamental introduction to certain core principles? You are lucky to live in today's world with the internet to be able to search for these things, and I wonder why you'd ask how one would know how to write something given that I assume you yourself would search for examples and thus learn from them? I would like to mention that there is also an aspect of creativity that must exist for a good developer; sometimes you are writing something that hasn't been written, and examples will not exist. The fundamental question is usually, "what problem am I trying to solve" and then, "what do I already know about this problem"? Apologies for my ramblings.. your comment was thought provoking.

    • @codebreakeruk6533
      @codebreakeruk6533 5 лет назад

      @@mayaforte2 Your ramblings are welcome. I agree my question is odd considering the age of the Internet or more specifically the Web - but you got the core of my question at the end, which how one goes from zero examples and instruction, to solving a problem, creating that idea from scratch. I am more interested in the creative spark that comes to a programmer in a moment of problem solving.
      It's a difficult question for me to phrase because, and I suppose the TCP/IP example was a terrible one, but if say, one wanted to create an accounting program, accountancy has been around for generations, it's easy enough to get a book on the core concepts and talk to accountants on what they need from such a program.
      My question comes to something that does not exist already, I look at when Unix was created and think "What on earth possessed them to create it? How did they know which direction to take?"
      But from your response, I suppose it really just comes down to trial and error, a good understanding of the problem and analysis of what it is to solve and ultimately accomplish.
      I just look at today's world, where we have APIs all over the place, we hook and call into our operating systems, our browsers, we interconnect to all of these previously built systems in order to then make today's applications. Compare that to when Unix or Windows was created. (Of course i'm not asking anybody to show me how to make an OS)
      Take video games for example, they are marvellous examples of mathematics, from grids and tessalations for terrain geneartion and mapping, or complex geometric shapes for charactersa nd objects, these are all described mathematically.
      Perhaps again, to your comment, it comes down to the way of thinking mathematically, logicallly, and scientifically, and through any combination of those, programmers figure their way through a problem and solve it.
      And, I suppose, that way of thinking is sahped through experience and practice.

  • @seckinkukrer6920
    @seckinkukrer6920 5 лет назад +8

    This video is not about the Every Programming Language.
    It is about the Imperative Languages...

    • @herrfriberger5
      @herrfriberger5 5 лет назад +2

      Perhaps one point he's trying to make is that all languages are imperative at some level.

    • @seckinkukrer6920
      @seckinkukrer6920 5 лет назад +1

      ​@@herrfriberger5
      I would love to be.
      But, if your approach is the same to all Programming Languages; You have a serious problem.
      Also, Programming isn't about directives, it's about data, and it's journey to the desired shape.
      The philosophy of programming is not that at all --imperative--.
      Computer Science is so young, but it will be grow, be mature. These are just the phases, I think.
      I'd like to end with this;
      catonmat.net/what-would-john-mccarthy-say-if-he-saw-you-programming

    • @herrfriberger5
      @herrfriberger5 5 лет назад +1

      @@seckinkukrer6920 You would love to be what?
      Who mentioned directives? Programming is about solving practical problems, either classic computational problems or the state machine type of applicances and applications.
      "Computer science" is in many ways not a science. It is more like a culture that partly employs science (physics, electronics) and mathematics. Important parts of it are around 60 years old (Algol 60, Lisp, Simula, etc.). With many fundaments being around a hundred years old (Shannon, Church, Nyqvist, etc.) or older.

  • @marcusdavenport1590
    @marcusdavenport1590 Год назад

    This is definitely Developer Talk...
    Example: 7:56 Looping - would be great if you simply said "This could almost be called "until" aka keep adding this Number until this meeting this condition."
    That is how you translate Looping into English lol
    Show an example of it, why it'd be useful for someone who's creating a project.
    Otherwise you end up with half the class not understanding what you're saying.

  • @reinux
    @reinux 5 лет назад +1

    Every structured procedural language*

  • @chethelesser
    @chethelesser 5 лет назад +2

    Cool that the title of the video is a statement in itself. I agree - doesn't matter what the language is like, it has to have these things

  • @ChadieRahimian
    @ChadieRahimian 5 лет назад +7

    I clicked on the video expecting to hear a song.

  • @EdPin_
    @EdPin_ 5 лет назад

    Nice template, just a few colorful animations, just a bit simpler language, presented a bit slower and even average kids could grasp it in one condensed lesson.

  • @linuxguy1199
    @linuxguy1199 5 лет назад +3

    Assembly don't have if statements, while loops, or functions. It just has jump, call, and ret.

    • @kmr_tl4509
      @kmr_tl4509 5 лет назад +3

      jne

    • @herrfriberger5
      @herrfriberger5 5 лет назад +2

      It depends. Many assembly languages have the procedure (function) abstraction as well as syntactical variables (not just memory locations). Some even have ready made loop instructions.

    • @flyingskyward2153
      @flyingskyward2153 5 лет назад

      There's multiple assembly languages, they have different instructions and different mnemonics for them.

    • @herrfriberger5
      @herrfriberger5 5 лет назад +1

      @@flyingskyward2153 Mnemonics.

    • @flyingskyward2153
      @flyingskyward2153 5 лет назад

      @@herrfriberger5 Well now I feel like an idiot. Thanks for the correction!

  • @pigboiii
    @pigboiii 5 лет назад +1

    Great concise video. If I would have been taught this I think it would have clicked sooner what exactly code really is and how computerd work. To all the people arguing with him on minor stuff: for real people? Obviously this isnt exactly targetted towards people that are at a level where they need to/can understand that. I srsly doubt you guys learned english at the oxford level instead of just easy sentences and words. Or physics with all the exceptions to newtonian physics right out the gate.

  • @zikomo8913
    @zikomo8913 5 лет назад

    What happened to your website, codeschool.org?

  • @obiwanus
    @obiwanus 5 лет назад +3

    If I were a total beginner, this video could have made me think that programs are some entities within a computer that write to files or send data over a network (as per the first slide). It probably would've been more helpful to specifically point out that the computer does all that, not the programs. Just saying.

    • @EconaelGaming
      @EconaelGaming 5 лет назад

      Agreed. I usually start off with explaining that program code are instructions which a computer follows, similar to a cooking recipe.
      However, I don't know how useful that actually is to the students.

    • @chethelesser
      @chethelesser 5 лет назад

      Good point. I think the target audience is savvy enough to understand that though. Most people have common sense knowledge of what computers are like, especially ones that would be interested in watching the video.

  • @GeorgeTsiros
    @GeorgeTsiros 2 года назад

    data has only 1 underlying type: _enumeration_
    we represent _anything_ else through that
    "string" as a distinct, dedicated type needs to die a fiery death

  • @kapteinkonyn3450
    @kapteinkonyn3450 4 года назад

    Great content. Just one thing: In C++ variables are not necessarily copied when passed as arguments to functions. If passed by reference, you are actually referencing the same variable in memory. Not sure about other programming languages though.

    • @mlgpro2241
      @mlgpro2241 3 года назад

      Same goes for C, but I guess that's obvious

    • @kourii
      @kourii 2 года назад +1

      He did explicitly say that the _value_ passed into the function as an argument is assigned to the intra-function parameter variable. Noöne said anything about copying the variable. What you said is right (and generally true of run-of-the-mill programming languages), but you aren't correcting anything he said

  • @piaere
    @piaere 3 года назад +1

    Br(ill)ian(t) Will

  • @peacefulchange446
    @peacefulchange446 5 лет назад

    Bro, nice vid. Only 40 sec in. Already know its going to be good ^_^ yes good to see u upload. Thanks. Hope all is well.

  • @yungifez
    @yungifez 2 года назад

    Apart from not !, what wise uses just 1 operator

  • @ninig9521
    @ninig9521 5 лет назад +3

    Bruh.

  • @JanKowalski-se7tn
    @JanKowalski-se7tn 5 лет назад +1

    /dev/null is a pretty useful gizmo... :)

  • @SharifSourour
    @SharifSourour 5 лет назад

    You didn't cover data structures or converting different numerical variables on different systems but I suppose that would be more "development" or "engineering" than programming. Very nicely done!

    • @researcher4good
      @researcher4good 2 года назад

      "Collections" on slide two is how he described data structures.

  • @welltypedwitch
    @welltypedwitch 5 лет назад +2

    11:43 well... in a lot of languages (Python, JavaScript, Go?, ...) you can have code outside of functions.

    • @ji1046
      @ji1046 4 года назад

      He said programming language hehe

  • @Dorto123
    @Dorto123 5 лет назад

    Good video man

  • @jvcmarc
    @jvcmarc 5 лет назад +2

    Assembly is not a part of every programming language?

    • @Mr8lacklp
      @Mr8lacklp 5 лет назад +1

      Neither is Haskell or prologue apparently

    • @jvcmarc
      @jvcmarc 5 лет назад

      @@Mr8lacklp neither prolog

    • @jvcmarc
      @jvcmarc 5 лет назад

      _or html_

    • @Mr8lacklp
      @Mr8lacklp 5 лет назад +1

      @@jvcmarc to be fair there is an argument to be made that html isn't really a programming language, for instance: It isn't Turing complete

    • @jvcmarc
      @jvcmarc 5 лет назад

      @@Mr8lacklp that's why it's in _italics_

  • @JR-mk6ow
    @JR-mk6ow 5 лет назад +4

    Everything sounds simple until you start dealing with networks and system calls. FFS, all those forks and pthreads with asynchronous requests inside them. Ffs

  • @TheddunTOSS
    @TheddunTOSS 5 лет назад +10

    Very good video. However, you should change the title to "Every Imperative Programming Language in 15 Minutes", because it does not match with logical or functional programming languages.

    • @SarahScratches
      @SarahScratches 5 лет назад

      functional programming languages are just imperative languages but without loops. 😉

    • @Alche_mist
      @Alche_mist 5 лет назад

      The constructs are named differently and the coder behaves slightly differently around them, but they are hidden there even with those paradigms.

    • @yura979
      @yura979 5 лет назад +2

      @@SarahScratches such a false statement. Not sure if trolling or ignorant.

    • @Mr8lacklp
      @Mr8lacklp 5 лет назад

      @@Alche_mist they really aren't there in the theory.

    • @SarahScratches
      @SarahScratches 5 лет назад

      @@yura979, I'm not ignorant and I was joking a little bit, but really, functional languages have got most of the things that are described in the video apart from loops.

  • @cmdv42
    @cmdv42 3 года назад

    💯

  • @HarmonicaTool
    @HarmonicaTool 5 лет назад +2

    "but at any one moment a variable is storing just one value" - so a variable cannot contain many values at a time, like in R were every variable contains a vector of values??Obviously a click bait title. Should maybe be "What many C derived languages have in common". Others have pointed out, that loops are not part of Haskell or Prolog. Stating that a function has a name is often not true even in mainstream languages such as Python (anonymous functions/lambda expressions) and in many languages the same function name can apply to different "bodies of statements" (if the argument numbers and types differ, cf generic functions in R). Seriously, no mentioning of the difference of functions and methods? Seriously: Function calling does not prohibit multithreading. The "system call" explaination is not very suited for all those virtual-machine languages. "No code exists outside of the functions? Again not true for e. g. python and R and Perl and excludes Shell-scripting. Perl and R code starts at the start, not at some function called "main". The video could as well have stated, that block of code were always within curly brackets.Again: A lot of this is not only wrong for exotic languages like Prolog, but also for widely used languages like Python, Perl, R, Shellscripting thus not "every programming language".

  • @Manquia
    @Manquia 5 лет назад +5

    Hey Brian, can you change the description? There is no way a "total beginner" will understand this, and there should not be an expectation that they should be able to understand it. I know the intent of this video may be to inform, however, I feel the description may instead discourage because of the level of complexity you go into.
    This is mostly what a systems-level programming language handles/uses so you may also want to specify that in the title. My main issue is with the "total beginners" which is just dismissive and rude. Like, if you don't get this why are you even here!
    P.S. Probably going to get downvoted for this comment...

    • @matthewlind3102
      @matthewlind3102 5 лет назад

      Agreed that beginners won't grasp everything. Still, it is worthwhile for total beginners to watch this and not understand it.

    • @Manquia
      @Manquia 5 лет назад +1

      @@matthewlind3102 Exposure to a topic will almost always improve a determined individual. However, exposure can cause less determined people to shy away and become disinterested.
      Calculus has this problem in spades. Calculus is complex because of the minutia of the algebra, but the core elements are quite simple. Many people get stuck in the minutia and fail to continue learning because of their exposure.
      personally, this happened to me in the opposite way. My first experience with programming was with C++ as a black-box language. We didn't go into great detail about how anything worked and this greatly discouraged me from programming. Years later, I am learning the same materials in a more focused manner and end up building a love of programming. Now I am a full-time software developer, even though my degree is in game design and programming. There should be some care into at least the framing of exposure to the audience. The video's content is fine, I just have a problem with the description using the term "Total Beginner". Finding something like this is the sort of thing which could encourage a newb programmer to give up to pursue other fields because they don't' get it.

  • @fu2201
    @fu2201 2 года назад

    Can you make this more dry..............

  • @zeocamo
    @zeocamo 5 лет назад

    Brian talking about c/c++ here for the "if", in other languages like javascript "if" do not only take booleans it take any value and convert it to a boolean, this is really useful

    • @oracleoftroy
      @oracleoftroy 5 лет назад +2

      Replace C and C++ with Java and C# and your statement would be more accurate. Both C and C++ allow non-boolean expressions as if conditions.

  • @derekfrost8991
    @derekfrost8991 5 лет назад +2

    Some information here is not correct. There are a ton of languages which are mathematically pure. When you say they are useless without side-effect output, this is open for debate but some exist whether you like it or not.. like Zenlisp. I've used it for my home accounts for example.. :)

    • @TheAndreArtus
      @TheAndreArtus 5 лет назад +1

      Are you merely using it to warm a room? A system with 0 outputs is little more than a space heater.
      If you (or any other thing) can see a result, by any means, you have output. If you are using it for accounts then you presumably have ways of seeing the result f a computation, no?

  • @amisner2k
    @amisner2k 5 лет назад +2

    I was fooled by your title. I thought you were going to go over every programming language as a sort of quick tour/overview with hopefully some interesting factual nuggets about them I might not have known. I was disappointed to instead see a video telling me everything I already knew.
    I even skipped ahead some to see if there would be some new nugget of knowledge to glean but it was just more "Programming Languages 101" stuff. I don't know, this feels out of place from your regular content where you go into great detail of a single programming language, tool, or pattern...this video felt like going back to kindergarten.

  • @SOARRRRRR
    @SOARRRRRR 5 лет назад +2

    cobol is the most difficult programming language to learn for me. Years later I learned cobol was invented by a woman. All of a sudden everything made sense.

    • @herrfriberger5
      @herrfriberger5 5 лет назад +1

      It probably has more to do with COBOL being an early language. The first variants of FORTRAN was not exactly easy to use either.

    • @rkvktmen
      @rkvktmen 5 лет назад +1

      Actually, it was designed by a team of six, four of whom were men, but you sure put those wimmin in their place.

    • @SOARRRRRR
      @SOARRRRRR 5 лет назад

      @@herrfriberger5 I never used Fortran. Cobol has formats and phrases makes that language very complicated and always makes you feel you forgot something. Subtle meanings are buried in the phrases. Think about the Perform Through for example, and the PERIOD! The language is designed to trip a man. Hopper was divorced and never married.

  • @mintoo2cool
    @mintoo2cool 5 лет назад

    On infinite loop, a comment.. wouldn't you say it's desirable to have infinite loop for the case of servers ?

  • @tg4481
    @tg4481 5 лет назад +1

    OOP stole my wife

  • @Janis_P
    @Janis_P 5 лет назад +1

    I was waiting until you actually get to the languages. lol

  • @stephenkamenar
    @stephenkamenar 5 лет назад

    my web browser isn't a program that takes input and gives output

    • @112BALAGE112
      @112BALAGE112 5 лет назад +2

      Wouldn't you agree that displaying web pages on your screen is output and taking in mouse clicks/keyboard strokes is input?

    • @stephenkamenar
      @stephenkamenar 5 лет назад

      @@112BALAGE112 based on his definition, i wouldn't think web browsers or games were created by programming langauges

    • @112BALAGE112
      @112BALAGE112 5 лет назад +2

      @@stephenkamenar I found myself convinced that his description fits the c++ language well, in which many browsers and games are written.

    • @cristianbrici7074
      @cristianbrici7074 5 лет назад

      Clicking The mouse îs input în vg and The caracter shooting îs output

  • @uwuzote
    @uwuzote 2 года назад

    mutable variables? bruuuuuuuuuuuuuuuh, disgusting, we in Haskell does not have this shit

  • @autarchprinceps
    @autarchprinceps 5 лет назад

    "Every program must output data" - I don't know. I have written a lot of stuff, that just performs external actions / triggers things, with little to no data required. Unless you apply a really rediculously wide definition of data, I would say you constrain yourself too much.
    And before you say, I'm nitpicking. The difference between programms designed to calculate and output data in the narrow sense of the term and programms with business logic that live for side effects, triggers and actions is one of the main reasons why we still have even entire branches of different programming languages.
    Try writing a trigger / action based scenario programm in a hard functional programming language, and you will have real issues almost immediately, write a programm that is all about getting a data result from an input and they are awesome.
    Loops might also be an issue, if you take programming languages to a wider field. Regex for example doesn't have loops by definition. Sure most do have functions, variables and loops, but go to slightly more exotic places, and you will already have issues identifying them as such, if they exist at all. Theoretically and to a certain extend practically in stuff like hadoop, streaming sql or such things, you can express every manipulation of data as a series of maps and reduces. Try finding your while statements there.
    If you title it "Every Programming languages" you can't just assume C, Pascal and Basic derivatives. There is a wider world of crazy shit out there some people might even spend all their live coding in.

    • @kbgagt
      @kbgagt 5 лет назад

      Fuck you

  • @7Earthsky
    @7Earthsky 5 лет назад

    Nerrrrds.

  • @paulurban2
    @paulurban2 5 лет назад

    /dev/null

  • @altairel-ghoul6802
    @altairel-ghoul6802 5 лет назад +1

    This should be titled *"NO programming language in less than 15 mins"* since it speaks of no PL but of what a program in an *imperative* PL is at a very abstract level. Then, there are functional PLs, whether "impure" (e.g., LISP) or "pure" (e.g., Haskell), as well as logic PLs (Prolog). And, for all such kinds, variations with object-oriented typing for the representation and manipulation of structured data. Finally, one must explain the difference between macro languages, interpreted languages, scripting languages, and compiled languages, and combinations thereof.
    But your video is a good waste of 15 mins for youngsters eager to learn how to write code that is useful for some non-trivial applications without spending more than 15 mins. They might feel disappointed though.

  • @vladimirkraus1438
    @vladimirkraus1438 5 лет назад

    The explanation of variables is not correct for example for Python. Variable is not a named location in memory, nor assignment overwrites anything. :)

    • @KaranLobana
      @KaranLobana 5 лет назад +1

      I am pretty sure the interpreter does actually have a named reference for variables. Due to duck typing, whenever a variable changes its type during runtime, assignment does infact overwrite.

  • @FlyingGuySFO
    @FlyingGuySFO 5 лет назад

    I assert that the ONLY two things a computer can do is loop and branch. Everything else is based on those two things.

    • @EconaelGaming
      @EconaelGaming 5 лет назад +2

      I'll bite. How do you assign value to a variable with just looping and branching.

    • @FlyingGuySFO
      @FlyingGuySFO 5 лет назад

      @@EconaelGaming Ok, so lets define how a variable is created / generated. Remember EVERYTHING in a computer is only a simple matter of a voltage, it is either low enough to be considered a 0 or high enough to be considered a 1. So if I connect a voltage to a pin on a computer, and it does not loop, it will simply just be a voltage on a pin, but if the computer has a clock firing at some frequency, it can sit there and toggle that value through a set of gates that can then assemble a set of gates that have voltages that are a combination of 1's and zero's that can, when interpreted correctly ,can be the value of 42! Now a variable, in the case of RAM is simply a set of bits, that are interpreted by this machine we have defined, as a VALUE. That's is how ONLY looping can set a variable to a value. BRANCHING is the act of either running some code or running some other code, which without looping, would never happen. Try turning off the ONE oscillator that sets everything in motion.

    • @FlyingGuySFO
      @FlyingGuySFO 5 лет назад

      @@shaurz Grumble grumble grumble... Kinda sorta, but not really. You have to loop to branch, but you need not branch to loop. They are closely related, but with a one way dependency. But I am grumbling...

    • @herrfriberger5
      @herrfriberger5 5 лет назад +3

      Well, you forgot the single most important thing computers do - *arithmetics.*

    • @herrfriberger5
      @herrfriberger5 5 лет назад +2

      @@shaurz Well... both looping and branching are jumps.