7 – Software Languages: How does Spud feel about them?

A fun conversation before writing this blog post

I would like to talk about how I personally feel about software languages. Most of this post is going to be very subjective and I want to apologize in advance for any grievance I give to the language that you love! I know I’m going to say some controversial things, but I just want to say it because I think it will be fun and it might (hopefully) stir discussion.

Seriously I really want to stir this pot! Please tell me how I’m wrong or misinformed or anything like that. I’d love to discuss!

I will give some background that will hopefully give you some context about why I feel a certain way. There will be 6 different categories for each language:

  1. Spud’s background: How does Spud feel about them personally?
  2. Can people read it? readability or the accessibility; can real people who know how to program read this code? Can regular people/ordinary mortals read this code?
  3. Documentation: can people find out about what this code does?
  4. Performance: this one will be closer to objective than subjective, and I can be wrong about stuff, so please don’t kill me for not getting it 100% correct!
  5. Code comparison: initialization of an integer array, for in/ for each loops, and printing :] So for each number in the integer array called numbers, I will print that number.

Other thoughts: I’ll just spew things that I think of here about the language itself haha trust me it’ll be fun to read ;D

So remember! I am a native iOS engineer first. This will of course color my crazy opinions on these languages. I also went to a university and learned other software languages. Because there are so many different software languages I will only talk about the ones I’ve used at least a little bit of. Or at least the ones that were memorable to me haha

I will not talk about integrated development environments (IDEs) and how they affect working with the language and how it might make it better (or worse lol). That would just be too much to talk about, and maybe I’ll do another blog post on that :]

Also another important disclaimer: Software changes a lot. Software languages change A LOT. People make improvements to them all the time, and so my knowledge on some of this stuff might be a little outdated. You’ve been warned! 😀


Swift

  1. Spud’s background: Of course! Of course I’m gonna start off with my most favorite language. I use this language every day and I absolutely love it. I started coding in Swift in 2018 and I will advocate for everyone to learn it. I believe it is beautiful in it’s simplicity and I want to teach everyone how to use it. Let me know if you want me to teach you how to program in Swift 👀
  2. Can people read it? Everyone can read this code! Okay well, not everyone haha Someone who is not very well versed in reading software languages in the first place might not be able to read it exactly, but they can certainly try to guess what that code is doing, and they’ll be very close!
  3. Documentation: I am of the opinion that depending on what you are looking for and how old the technology you’re using is, Apple’s documentation can be pretty good. Sometimes it’s not so good though, and can be a little cryptic unfortunately. But stuff in UIKit is usually really well documented and sometimes even comes with pictures to help your understanding :] isn’t that nice? Also there’s the Swift Programming Language’s Language Guide. It’s SUPER good at teaching you the basics, and it’s an excellent resource when you’re first starting out, or if you’re like me and have been using it for a while. Highly recommend you use this, and I’m gonna link it again, that’s how much I believe it’s a good resource haha
  4. Performance: Fairly good, I think! I think there are tools you can use to access memory and make the apps you write more performant (I could be pretty wrong on this tho).
  5. Code comparison:
let numbers: [Int] = [1, 2, 3]

for number in numbers {
   print(number)
}
Output
1
2
3

This is just the most beautiful part of Swift development. The fact that it’s so simple to read and write. It’s succinct, nothing extra that you don’t need. I love it.

Other thoughts: The way Swift handles types and optionals and wrapping stuff I think is masterful and beautiful.

SwiftUI

  1. Spud’s background: I’ve worked a bit with SwiftUI, I’ve made several prototypes with it. I’ve not used it to make a fully fledged app, and I don’t think that it’s ready for that yet. It’s fairly new and it’s declarative, which I’ve found I’m not a fan of. I remember talking to a close friend of mine about SwiftUI and I told him I didn’t like it but I didn’t know why. After a few hand wavy attempts to explain myself, he said you don’t like it because as the old boys would say, it’s too M A G I C A L. Yes. That was a reason why I didn’t like it. I love Swift because it sort of hides (and you can still find it and read it) the implementation of, for example, the sort function. You don’t need to write your own sort in Swift, Apple has already done it. If you want one that is more optimized (is that even possible?) then perhaps you can write one yourself, but you can probably just use the sort function they wrote and be okay. So it kind of feels like you’re sweeping a lil bit under the rug and it’s okay. SwiftUI feels like you’re hiding the whole house under the rug. You can do a whole bunch in one line, one word even, and it feels like it’s too much, and you don’t quite understand why it does what it does. At least I don’t understand 🥺
  2. Can people read it? Yes, I would argue that it might be even more readable that Swift maybe.
  3. Documentation: Pretty good I think, and getting better. I think Apple’s standards for documentation has increased and they have lots of great projects and tutorials in SwiftUI.
  4. Performance: I have no idea. It’s probably good, I trust Apple with performance.
  5. Code comparison:
let numbers = [1, 2, 3]

var body: some View {
   List(numbers.identified(by: \.self)) { number in
      Text("\(number)\n")
   }
}
Output
1
2
3

It just looks weird and not good. I get it, trying to build stuff super quick and easy and stuff, I’m just not a fan. Also what is this identified nonsense?

Other thoughts: I think SwiftUI can be good for protoypes and for small apps. I think it’s good for designers or those who don’t care about programming. You can make small changes to your views very easily. I am very interested to see how SwiftUI changes and becomes a better language over time.

Objective-C

  1. Spud’s background: I used this for a couple of projects that had Objective-C and Swift in it. The pieces of that particular project that were in objc was very very difficult to read. I’m not sure if that is because objc is very hard to read, or if the person that coded it just made it very obfuscated. I’m actually able to read it well enough to translate it into Swift when I find stack overflow answers that help me with what I need.
  2. Can people read it? Ehhhh…. maybe? Kinda? I think this depends on who is writing it, though I think it is very easy to fall into bad habits and write code that is messy.
  3. Documentation: Pretty alright, whatever you can find in Swift on Apple’s documentation it’s also available in Objective-C.
  4. Performance: I think it’s better than Swift, but I’m not 100% sure.
  5. Code comparison:
NSArray *numbers = @[@1, @2, @3];

for (NSInteger number in numbers) 
{

   NSLog(@"%d\n", number);
}
Output
1
2
3

I don’t really understand why you have to do the “@” in front of integers, maybe one of you can explain that to me. The *’s remind me of C and makes me shiver, but I feel like they’re not pointers. It looks like Swift’s grandpa or dad or something, which it kind of is.

Other thoughts: When I first started out I hated reading Objective-C. There’s too many brackets and my goodness the tabs were insane and it was so hard to keep track. This might have been because of the person that wrote it, and not because this language is inherently hard to read.

Kotlin

  1. Spud’s background: I’ve used this language to make a couple Android apps. It’s alright, but as my friend says Kotlin is Swift Lite, or Great Value Swift. That’s right. It’s Walmart brand Swift. I know. This is hard to read, but it’s how I feel. They don’t even have ternary operators in this language 😭 No, but honestly it’s alright. I think it’s simpler and a bit lighter than Java and so it’s nice. It feels more modern for sure, maybe not as much as Swift, but still.
  2. Can people read it? If you know how to code, sure yeah, you can read Kotlin. I don’t think every day people can read it though.
  3. Documentation: It’s good because of this. That link is kinda like the Swift documentation I linked up there. But Google’s documentation is all over the place honestly. Sometimes it’s easy to read and they have great tutorials, but sometimes those tutorials just straight up lie to you about how you’re supposed to use it. I dunno if it’s because they’re outdated or what, but I’ve definitely come across documentation that was just false.
  4. Performance: Good, not sure if it’s as good as Java though.
  5. Code comparison:
val numbers = listOf(1, 2, 3)
for (number in numbers) print(number)
Output
1
2
3

Honestly, this is nice and fresh and clean. I wish all of Kotlin was so easy to read lol. I wish you didn’t need the parentheses after the keyword for, but you must have them in Kotlin.

Other thoughts: I like Kotlin. Even though it is Walmart brand. I still like it waaaay more than Java for Android development.

Java

  1. Spud’s background: THUMP THUMP THUMP It’s the old boys club! This was the first language I learned in college. Java is old. It’s massive. It’s used for sooooo many different things. I haven’t used it since I was in school, which means it’s definitely been a while, 2018.
  2. Can people read it? Depends. Usually it takes time to really read and understand Java, but depending on who’s writing it, it can be clean and easy or very messy and gross. I think it was very easy to write some nasty code in Java.
  3. Documentation: Again, I haven’t used it since I was in school so this may have changed, but I remember it being very okay. Kinda hard to find resources that are easy to read and fun.
  4. Performance: Pretty good I think? A lot of enterprise systems are made with Java, and I’d have to imagine they picked Java over C because it’s a bit easier to write and it’s still performant.
  5. Code comparison:
int[] numbers = new int[] {1,2,3};

for (int number : numbers)
 {
  System.out.println(numbers[i]);
}
Output
1
2
3

The initialization of the numbers array is so extra. Why do you need to say it’s an int[] twice? So bizarre.

Other thoughts: I think… I think I liked Java. I think it was a little unwieldy, but it was also an alright language to be taught basic computer science concepts. I’d rather teach those things in Swift or a drag and drop language, but you know it really kicked me in the pants to learn computer science, so I’ll always be grateful for it.

Javascript

  1. Spud’s background: I don’t like Javascript. It’s weird, their types are weird, there are exceptions to rules and I don’t like that. I used it a bit in college and I just don’t like it. It’s also just too large, there’s too many useless libraries you can accidentally use. How can you accidentally use a library?? Javascript found a way I guess.
  2. Can people read it? Yeah, I think it’ll take more time than say Swift, but I think you can mostly read this language if you know how to code.
  3. Documentation: Not sure, but I’d imagine it would have to be pretty good? There are a bunch of web devs and I feel like documentation has to be good right? You all aren’t rewriting the wheel over and over again right???
  4. Performance: No idea. Probably bad? Maybe good? I honestly have no idea sorry, please let me know.
  5. Code comparison:
const numbers = {  first: 1, second: 2, third: 3 };

for (const number in numbers) {
  console.log(`${number}: ${numbers[number]}`);
}
Output
first: 1
second: 2
third: 3

I don’t get why you need the first bit… like why do you need the “first”, “second”, “third”, I just named it like that for fun, but I don’t get it. I feel it’s a lil old fashioned to have the const in the for, but it’s fine.

Other thoughts: I am in awe of those who use this language. I feel they are gods among us mortals. I’m honestly scared of Javascript and maybe a little scared of those who use it 🥺

Typescript

  1. Spud’s background: I used Typescript my senior year of college. It was better than Javascript if I recall correctly. I think it was a little easier to read, I think the types made a little more sense. I’d rather use Typescript than Javascript any day.
  2. Can people read it? I think it’s more readable than Javascript.
  3. Documentation: Not sure. Please give me your thoughts and opinions so I may steal them. If I had to guess, it’s quite like Javascript, or maybe better than it though.
  4. Performance: Same here, I have no idea, please let me know if it’s good.
  5. Code comparison:
let list: numbers[] = [1, 2, 3];

for (var number of numbers) {
  console.log(number);
  console.log("\n");
}
Output
1
2
3

Typescript is better than Javascript, you don’t need those weirdo properties or whatever.

Other thoughts: It’s better than Javascript the end.

Dart

  1. Spud’s background: I had to research Flutter last year and so I had to use Dart. Why does Dart feel so old? It feels clunky and heavy for a language that is declarative like SwiftUI. I’m worried this will bring Flutter down, I think it’s really a cool and interesting tool, I’m just worried Dart kinda stinks to use.
  2. Can people read it? Yeah? Not as well as SwiftUI though.
  3. Documentation: I think it was actually alright, I liked it better than Kotlin documentation strangely enough. Google what’s up?
  4. Performance: Not sure, but I think it’s better than other cross platform tools, but worse than natively built stuff.
  5. Code comparison:

var numbers = [1, 2, 3]; 
 
for (var number in numbers) { 
   print(number); 
} 
Output
1
2
3

The actual building blocks of how to use Dart to build stuff in Flutter doesn’t feel this nice lol. Also why do you need semicolons in a language like this and why do you need the var in the for? Why does Dart feel like a really old person with botox in their face? :[

Other thoughts: I don’t want to use Flutter because I don’t really like Dart. I think if it used a nicer, lighter language I would use the hell out of it.

Python

  1. Spud’s background: I used this in college, and actually I don’t think I used Python I used a version of it called VPython for a physics course. I hate physics and so I have come to associate python with it, though I shouldn’t. I almost failed physics and so I almost failed out of Computer Science before I could even get to my Computer Science courses. How does that make any sense? It’s because at my school Computer Science is an Engineering major, so you must pass Physics I & II. Which is complete bullshit in my opinion, but whatever! I got through PSY1 with a C!
  2. Can people read it? Yeah! I’m pretty sure Python was made so that everyone can learn it super easily.
  3. Documentation: Not sure. Please give me your thoughts and opinions so I may steal them.
  4. Performance: No idea here either. Please let me know your thoughts.
  5. Code comparison:

numbers = [1, 2, 3]

for number in numbers:
    print(number)
Output
1
2
3

Very simple, very nice, but watch out for that indentation! I heard you can get some dumb errors because of it!

Other thoughts: I think physics has tainted my view of Python, which is a shame because I know it’s really good for beginners. I love to teach, but unfortunately I don’t think I will ever use Python as a teaching tool. I will say I think the tabs are weird and not great though.

C#

  1. Spud’s background: I used this in school for a couple of projects I made in Unity. It was fine. Kind of. I think I had moments where I was like “huh??” but just kept going because I needed it for my project lol
  2. Can people read it? Yeah, I think so.
  3. Documentation: It was very okay if I recall correctly. Not great, not bad. Very very okay.
  4. Performance: Great for making games! That’s all I know haha
  5. Code comparison:

Span<int> numbers = new int[] { 1 ,2, 3};

foreach (int number in numbers)
{
    Console.Write($"{number}\n");
}
Output
1
2
3

Again, the initialization of the numbers array is hilarious to me, it’s too much darling.

Other thoughts: I honestly wished that I knew C# better so that I could make games. Maybe in the future I will try and learn it more so that I can make games in Unity :]

C++

  1. Spud’s background: This was the first “real” programming language I learned; I took a community college course when I was in high school. It was fairly simple and easy to learn. It made me realize I could definitely do Computer Science in college. I’m grateful for this language.
  2. Can people read it? Yeah, it’s kinda like C# honestly, I think they are focused on different things, but they are similar. If I recall correctly it was actually easier for me to read and write C++ than C#.
  3. Documentation: Not sure. Please give me your thoughts and opinions so I may steal them.
  4. Performance: Also a good language for making games, I honestly don’t know what differences between ++ and # are… actually now that I think about it even the pluses and the sharp look similar… huh. Something to think about. Also please someone explain to me the difference, I’d love to know it from your brains and not from Google.
  5. Code comparison:
int a[] = {1, 2, 3}; 

for (int number : numbers)  
    std::cout << n << '\n';
Output
1
2
3

Woof printing in C++ sucks haha. Also this is interesting, the for in for C++ looks closer to Java than to C#. Hmm.

Other thoughts: When I think of this language I think back to high school and being young and stuff, so it’s got a soft spot in my heart for sure :]

C

  1. Spud’s background: I hate this language. I used it in college and I remember sobbing my eyes out because of segfaults that I didn’t understand. I didn’t get why I kept getting them, the errors you get in this language are cryptic as f*ck and horrible! I hate pointers! I hate memory management! I hate this language.
  2. Can people read it? It’s harder to read C in my opinion.
  3. Documentation: Not sure. Please give me your thoughts and opinions so I may steal them.
  4. Performance: Very good. You must access memory and handle optimization yourself. It’s why operating systems are written in C. Still hate it though lol
  5. Code comparison:
int a;

for( a = 1; a < 4; a = a + 1 ) {
   printf("%d\n", a);
}
Output
1
2
3

I hate C lol they don’t even have for in or for each.

Other thoughts: The professor I had for this class’s teaching style did not align with how I learned. I had a very hard time learning in this class. He would pick random vocabulary out of his presentation slides that you had to memorize for his tests. He would make you do a quiz on what he taught in that class, on that day, and it counted toward your grade and your attendance. When it came to C, I was a pretty slow learner, and I could not internalize everything he taught on that same day, and so I always did a bad job on those quizzes. I hated this class and I hate C.

Assembly

  1. Spud’s background: I took an Assembly class in college and I loved it!!!!! Kinda! lol I actually didn’t really care for the language, but my teacher was an awesome person. I don’t even think he wasn’t even a doctor, he was just an older fellow that knew Assembly. He allowed you to use any and all notes on tests! His class was super early at 8am and he knew it, and he’d start class with a funny video that helped us wake up and introduced the concept we were going to learn that day. This was the guy that first taught me about how in software development there are three things you have: time, money, and resources and you have to balance them in order to have a good product.
  2. Can people read it? NAH lmao. Well, actually okay so once you learn what the commands mean and how to use them, you get it and it’s actually very easy. Which honestly that applies to any programming language lol. Even if you know how to program, Assembly is kinda hard to read and write. You are directly accessing memory and telling it exactly what to do. Never mind lmao I just took a look at Assembly, I haven’t looked at it in years, and yeah people can’t read this, even if you know how to code lol.
  3. Documentation: No idea, I feel like you only learn about it in class and no where else, but this probably isn’t true, I mean I found a resource that helped me with the code comparison so ¯\_(ツ)_/¯
  4. Performance: I mean, this is pretty dang close to the actual hardware of computers, or at least, it’s as close as I’d like to go. You can optimize your code down to lines of code if you want to. So I’d say super duper good performance.
  5. Code comparison:
It’s simple and very scary lol
Output
123456789:

so uh… it’s been a while since I’ve programmed in Assembly and I’m sorry to say I’ve forgotten how it works. I mean I won’t ever use it ever again in my life, I don’t know why I’m sorry, but I just am. I feel like I’ve lost something that I once knew. Ah well. Life goes on.

Other thoughts: This class was so fun and cool. I really don’t like lower level languages, but my teacher for this class was awesome. The only thing that bummed me out was that in order to get an A on assignments, you had to optimize your code to be the least amount, so like if you had 10 or less lines of code then you get an A, if you had 20 or less than you get a B and so on. I usually got C’s or B’s lol, but it was still a fun class.

Scratch

  1. Spud’s background: This was my introduction into coding! I first played around with Scratch when I was in 8th grade and I made cool and fun and shitty little projects :] It honestly got me into programming and without this I don’t know if I would have had the confidence to go into that C++ course when I was in highschool.
  2. Can people read it? HELL YEAH. Anyone can read this language, you don’t need to know how to code at all! I love this language and I think it’s a great intro into Computer Science!
  3. Documentation: I think there are forums and stuff, but Scratch is pretty self documenting! You can totally read this code like regular English and know what it is supposed to do.
  4. Performance: No idea, it’s probably fine unless you have a bunch of sprites on your program.
  5. Code comparison:
Scratch for loop… kinda
Output: the sprite says “1”, then “2”, then “3” for two seconds each

This… isn’t a for loop. I saw discussion on a forum about for loops for Scratch and it seemed a lot of people don’t care for them because there is this repeat function that does the same thing and Scratch is supposed to be for beginners and for loops might be a little harder to understand? I dunno, I feel like they don’t give enough credit to beginners, but that’s just me. I still think Scratch is an excellent, fun, and cool resource for kids to learn.

Other thoughts: I love teaching Scratch to kids. It’s my favorite thing to do. Want me to teach your kid Scratch? I’ll do it!

Snap

  1. Spud’s background: Incredibly similar to Scratch, this one was made by Berkeley and Scratch was made by MIT. Scratch is a teeny bit more polished, but I think Snap might be a little more powerful? Maybe this has changed though. Another great resource for introductions to Computer Science, especially older students.
  2. Can people read it? Yes, it’s much like Scratch. Anyone can read it, no coding experience necessary.
  3. Documentation: I have no idea, but I think it’s the same as Scratch, you should be able to just read what you or others have coded without documentation very easily.
  4. Performance: Same thing here, though for some reason I have a feeling it might be a tad more performant that Scratch? I don’t know why I feel that way, I don’t think I’ve ever read that anywhere haha
  5. Code comparison:
Snap for loop
Output: the sprite says “1”, then “2”, then “3” for two seconds each

An actual for loop! I think this is another reason why I think this is a better tool for older students. But yeah I love that you can just kinda read it in English and know exactly what it’s supposed to do.

Other thoughts: Snap feels a tad bit more… adult? Somehow? Just take a look and you’ll know what I mean :]


SO I’m sure you’ve got those pitchforks sharpened, and I’m ready to learn about your opinions and how you feel about these languages! I’d love to learn about tools that help make languages easier and better to use, and I want to know about resources that will help me learn these languages better. Please leave a comment here or on LinkedIn or wherever I posted this. Sure I could look it up on Google, but that’s not as fun or memorable honestly.

There are a lot of factors on why you would choose to learn a language, and sometimes you might even be forced to learn a language that you don’t want to. Whether that’s because of your job or school or because it’s just the prevailing language for the thing you’re trying to build. Community is another big factor in whether or not you choose a language, something I didn’t touch on in this blog post. I will also reiterate, IDEs can make your life so much easier, or much much harder depending on which one you use. They are excellent tools that can and have swayed my opinion on some languages! And it’s been a while, but I’m sure Eclipse can’t still be as bad as it was when I was using it in school… right? 😛

Thank you for reading this post, or even just a little bit of it, I know it was a long one. I’m sure you ctrl+f’d your favorite language and saw what I thought about it. I’m looking forward to having a fun discussion with you about why I’m wrong! Or maybe how I’m right? I will say I’m sorry for stirring the pot, but I really wanna discuss! See you in the next post :]

2 thoughts on “7 – Software Languages: How does Spud feel about them?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website with WordPress.com
Get started
%d bloggers like this: