turingschool-examples / intermission-assignments

33 stars 217 forks source link

The Nature of JavaScript Reading #84

Closed rrgayhart closed 7 years ago

rrgayhart commented 7 years ago

Read through Chapter 3 (Speaking): The Nature of JavaScript

Discuss in the comments

Some questions to start discussion:

What was interesting? Which sections did you totally skim? Do you think the reading was valuable? Which topics were notably confusing?

ghost commented 7 years ago

Two things that I find intimidating about JavaScript that were included in this reading were the fact that it fails silently, and the simultaneously object-oriented and functional nature of it. The failing silently aspect is especially scary because it means that debugging can be significantly more difficult in something like JavaScript than in Ruby, where there is typically some explanation of the error. I'm not super worried about it because I'm sure we'll discuss how to address this issue, but it did stand out to me.

Because JavaScript is both functional and object-oriented, it may actually be a good way to transition into learning the basics of functional languages: some conventions of JS will be different than we're used to, but those conventions might be helpful with other functional languages as well, so it's helpful in that way.

I skimmed over the diagram, as I'm not familiar with the conventions of most of the languages (is HyperTalk even still common?), but I did appreciate the synopsis of JavaScript's quirks and elegant features, so I did find this reading helpful.

lucyfox4131 commented 7 years ago

Something that was pointed out by this article, and that I've always found to be fascinating about JavaScript is the fact that it is both a functional and an object-oriented language. I look forward to seeing how these two sides of the language can be handled, especially coming from a background of very object oriented Ruby. I found it valuable that the article pointed out some of the quirks/missing features that JavaScript has as compared with other languages. For example, I was unaware that JavaScript did not technically have integers. Coming from Ruby it seemed if you could store a value as an integer it was preferred, so it will be interesting to see how programming techniques and strategies we've learned will be affected by this, or if they even will be at all. The pieces of the article I skimmed/was confused by were the same pieces. Primarily, this was the javascript influences. As I don't know a lot about the overall structure of JavaScript or of the majority of the other languages mentioned in this piece I don't feel super confident saying I understand what these pieces are and how they've contributed to JavaScript as a language.

AnnaCW commented 7 years ago

I was also interested to read the bit about JavaScript being both a functional and object-oriented language. I wondered if JavaScript was functional when I was introduced to the functional vs. object-oriented distinction, as I had worked with it a bit before coming to Turing, but I usually hear it categorized as object-oriented.

I'd like to learn more about the second "quirk" mentioned in the article ("arrays in JavaScript are too flexible: they are not indexed sequences of elements, but maps from numbers to elements"). I'm not sure I quite follow this or understand its implications.

rgbatty commented 7 years ago

I also agree that the difference between functional and object-oriented programming is fascinating. I always viewed JS as a procedural language, not actually functional. I would like to learn more about the difference between the three, and the benefits and drawbacks of each type.

Overall, after completing the required prework I get the feeling that JS has some immense power hidden under the hood, and that the challenge of Mod 4 will be learning to use it. Its inherently different from Ruby in all ways besides the absolute basics (ie. If statements), which means it will definitely be an uphill battle.

icorson3 commented 7 years ago

What was interesting? I constantly find it interesting that people are continually coming up with new languages based on other languages/built on them. Why not continue to expand on one awesome universal language? Which sections did you totally skim? It was pretty short so I didn't skim anything. Do you think the reading was valuable? I like to know the background of certain languages but I wish that it went a little more in depth as to why it was necessary to create and what was not happening in tech at the time. Which topics were notably confusing? Why we transitioned from other languages and why languages are better than others. It interests me because I wonder if it is about ego or something.

nickpisciotta commented 7 years ago

I find it interesting that JS is both an object-oriented language as well as functional. We're coming from the mindset that state matters, so it'll be interesting to learn about this distinction.
I do feel that the inner workings/backgrounds of languages is important, but found this article a little above my level considering there were many concepts that I'm not familiar with. I'm sure my familiarity and confidence with these concepts will strengthen throughout the module. I think the most confusing parts were the JS-specific concepts that I've never heard of.

ErinGreenhalgh commented 7 years ago

Interesting? I thought it was interesting that you don't need a class, as in Ruby, to create an object. I think this ties in with JS's object literal feature. The article says this is a benefit because you can start with the object and introduce abstractions later. I wonder whether this will have practical implications (I suppose most things in programming do) or whether this is more of a philosophical difference in thinking through what an object is. Which sections did you totally skim? I skimmed the section about which features JS inherited from other languages because I don't know much about any of the other languages listed, and the features mostly were abstract to me. Was the reading was valuable? Learning about the features, quirks, and history of any programming language is valuable, and becomes more so when you start to learn more than one programming language. I'm glad this reading was assigned, but I found it rather succinct. I would like to do more research on the topic. Which topics were notably confusing? The section on quirks did not mean too much to me because it felt jargony and abstract. I think this will be a good article to come back to after working in JS for a bit, because at this point it is hard to know how the language's quirks will affect our code in a practical and immediate way.

seeker105 commented 7 years ago

Topics that were confusing: This is the first time I've heard the term "first-class function". It is a feature of JavaScript that seems strange. It seems as though every function in JavaScript is what would be considered a Proc in Ruby. That's especially interesting/useful/worrisome in setting up return values when a function is used inside another function. A topic that seems very strange is the idea of doing Object Oriented Programming in a language that doesn't support class definitions. Objects are what might called either 'flexible' or 'poorly defined' depending on perspective. The idea of a 'closure' seems to be the kind of scope limitation that is taken for granted in so many other OOP languages. I still need to work with the concept of 'prototypes' more before I'll really understand it.

What was interesting: From the reading it seems like an 'array' is more like a linked-list of pointers. The fact that it can have holes is very important to be aware of.

What was skim-worthy: The section on the different influences didn't contribute to my understanding. I don't have enough experience with the influencing factors to appreciate how they may have contributed.

Was it valuable: Not really. It's too brief and doesn't give any explanation of the concepts and terminology. If I hadn't learned a few things about JavaScript from other sources I wouldn't have understood most of what the article said.

robbiejaeger commented 7 years ago

What was interesting? It's clear that JavaScript is not as structured as most languages. With that in mind, there will be many more ways to do things compared to Ruby, and many more opinions about what is "wrong" and what is "right". Knowing the origins of JavaScript's influences was interesting. Also, knowing that there is so much freedom with array values and indexes is interesting, but scary. Which sections did you totally skim? I need to learn more about closures. Also, the influence of HyperTalk on how JavaScript is integrated in to web browsers. Do you think the reading was valuable? Yes, it is a good article to get a high-level introduction to these topics. From here, I'll need to look into the individual topics more closely and refer back to this article if I'm having any issues related to these topics. Which topics were notably confusing? I don't think anything was very confusing... I don't understand some of the terminology, but that is more of a matter of me spending the time to look them up and read more about them.

ckaminer commented 7 years ago

I found it interesting that js identifies as a bit of a melting pot between so many other languages/influences. It's also equal parts interesting and confusing that js can act as a functional and object-oriented language simultaneously. I've seen other people's code that has classes and then in my limited experience have just made objects as needed. I am looking forward to learning more about this distinction. I enjoyed the high-level view that the article provided but was also unfamiliar with a lot of the terminology (mostly the "Elegant Parts" section) so am unsure how much detailed information or thinking points I actually came away with.

Parker-CP commented 7 years ago

The most interesting part for me was that JS was both a functional and OOP language. I tried to dabble with closure during mod 2, but the switch from ruby to a completely different type of language was far too daunting at the time. I'm excited to dive into more functional programming with JS to try and bridge the gap between those two paradigms for myself. Admittedly this was a short read, and I shouldn't have skimmed anything, but I totally flew through the influences. It doesn't interest me very much and I didn't see it as being very valuable. I do think the reading is valuable, it's a relatively short read, and I know exponentially more about the language now then I did. Prior to the reading I thought JS' only real use was making things move on a webpage. The most confusing section for me was the one on unorthodox features. I have never heard most of the jargon used in that sections and most of it went over my head.

saylerb commented 7 years ago
  1. What was interesting?
    • Interesting is that you can create javscript objects on the fly, without creating classes. Now that we've worked with JSON, I think I understand that generating JSON is creating an object without defining the classes.
    • Interesting the Scheme influenced Javascript. I've heard that Scheme is a good first functional langauge to learn, so I'm excited to use some function concepts in my Javascript programming going forward.
  2. Which sections did you totally skim?
    • I didn't skim anything...this reading was pretty short.
  3. Do you think the reading was valuable?
    • I liked the high-level overview of the language. I think it's valuable to be aware of a language's features before you start learning it in-depth.
  4. Which topics were notably confusing?
    • Still a little confused on the practical applications of closures. Also, Arrays in js can have holes? Wat?