16. Programming Languages#
Today we’ll explore how programming languages are cateogrized. Along the way, this will expose what core, generic features of a programming language are.
The key takeaway that I want for your is to have intution for how to choose a language for a project, not only your favorite, but what is the best for different types of projects.
Tip
You should do either the in groups
or the on your own
sections below for the x.x.x. For the x.x sections do all of them.
Important
Use the makeup workflow with an ISO formated date (YYYY-MM-DD)).
16.1. Comparing languages you know#
Tak a few minutes on your own to fill in the follwing table for two languages of your own. Replace the <langugage>
with two languages that you are familiar with. Add two additional rows. You can do this by memory, or by looking up/discussing. If you look things up, be sure to use reputable sources and include links to them.
| feature | <language> | <language></language> |
| ++++++-- | ++++++-- | ++++++-- |
| use of whitespace | Text | Text |
| list/array types | | |
| variable typing | | |
| memory usage | | |
16.1.1. In groups#
Share your table with some classmates and then discuss how they are similar and different.
Together, produce a list of questions for what other things you would want to know about how programming languages compare. All of you should include the collaboratively developed list in your experience report.
16.1.2. On your own#
Post your table and a question about how you might compare programming languages on GitHub. Reply to at least two peers offering either advice or asking additional questions.
16.2. Learn more#
What is the study of programming languages? intro to PL
16.2.1. In groups#
Discuss the reading, in particular:
what you found most interesting
was anything new to you?
what do you want to remember most or learn more about?
In your experience report make a few notes (all can be the same notes// one person could write and share) about if you all agreed or each had different key points from the reading.
16.2.2. On your own#
After reading this and your classmates’ posts, add notes on broader patterns below your table in your experience report.
16.3. PL in Developer Survey#
Read Carefully the developer survey// languages section for 2022. (the 2023 survey has not occurred yet)
Do additional reading about the languages from their official references if needed to answer the following questions.
16.3.1. With classmates#
Discuss the findings to answer the following questions. This discussion should be at least 10-15 minutes including looking up information about different languages. As a group, you may divide and conquer this research.
what is surprising?
what did you expect?
what do the popular languages have in common?
what do the dreaded languages have in common?
How are popular vs dreaded languages different? What features might be the cause for making a language dreaded?
How to used languages differ from less commonly used languages? What features might be the cause for making a languge popular?
How have things changed since 2011?
Include (shared) notes from the discussion in your experience report. Reflect (individually) on a few key points (2-3 bullet points) from the discussion in your experience report for today. Include the names of your group mates that you discussed with.
16.3.2. On your own#
Include answers to the following questions in your experience report for today.
what is surprising?
what did you expect?
what do the popular languages have in common?
what do the dreaded languages have in common?
How are popular vs dreaded languages different? What features might be the cause for making a language dreaded?
How to used languages differ from less commonly used languages? What features might be the cause for making a languge popular?
How have things changed since 2011?
16.4. Review today’s class#
For 2 languages from the loved vs dreaded list (one top 5; one bottom 5) read 2-3 posts about why people love/hate that language and summarize the key points on each side (meaning pros and cons for both loved and dreaded languges). Include links to all of the posts you read in a section titled
## Sources
in your markdown file. Make a bulleted list with some notes about the author’s background and any limitations that might put on the scope of their opinions. (for example, a data scientists’s opinion on languages is very valuable for data science, but less for app development) Add this to your kwl repo inlanguage_love_dread.md
.
16.5. Prepare for Next Class#
See prep from 2023-03-23, no additional prep.
16.6. More Practice#
Describe a type of project where it would be worth it for you to learn a language you have never used before in newlanguage.md This should be based in what types of features for the language your project would require and/or what would contribute to the long term health of the project.
Try out/learn about one of the following languages that you have not used before, do something small that is typical of that language (eg a toy data analysis in R): R, Julia, Clojure, Stan, Go. Try to use official documentation only to figure out a toy task to do. Answer the following questions in languagelearning.md:
1. What is this language designed for? 1. What Programming paradigm(s) does it support? 1. What language would make it easy to learn this language? Why? 1. What language would make it hard for someone to learn this language? Why? 1. What is its most unique feature(s)? 1. Include your small code bit (with comments!) 1. How was it trying to figure out this langauge
16.7. Experience Report Evidence#
Answers to questions