• 1 Post
  • 191 Comments
Joined 3 years ago
cake
Cake day: June 12th, 2023

help-circle

  • I’m not saying I don’t understand them. I’m saying the syntax is terrible. Compare it to Ruby (or any other modern language) and it’s abundantly clear.

    python (uses syntax not available in any other top 25 language)

    print([j**2 for j in [2, 3, 4, 5]]) # => [4, 9, 16, 25]
    

    ruby (normal chain syntax with map)

    puts [2, 3, 4, 5].map{|j| j**2}
    

    even kotlin is more readable, even though you have to convert to a double and back kotlin

    val list = listOf(1,2,3,4)
    println(list.map{it.toDouble().pow(2.0).toInt()})
    

    For nested cases it’s even more apparent:

    python

    digits = [1, 2, 3]
    chars = ['a', 'b', 'c']    
    print([str(d)+ch for d in digits for ch in chars if d >= 2 if ch == 'a'])    
    # => ['2a', '3a']
    

    ruby

    digits = [1, 2, 3]
    chars = ['a', 'b', 'c']   
    digits.product(chars).select{ |d, ch| d >= 2 && ch == 'a' }.map(&:join)
    

    kotlin

    val digits = listOf(1, 2, 3)
    val chars = listOf('a', 'b', 'c')
    println(digits.flatMap { d ->
        chars.filter { ch -> d >= 2 && ch == 'a' }.map { ch -> "${d}${ch}" }})
    

    just from a base level, you have to read the middle of the comprehension first, then the end, then the beginning. It’s a completely backwards way to write and read code. unlike other languages that use a ‘functional’ approach, where it’s chained methods or pipes, etc. Even Elixir, which does have list comprehensions, reads and writes in the proper order:

    elixir

    for x <- 0..100, x * x > 3, do: x * 2
    




  • Sure but only because I’m old enough to understand that. It still would have zero meaning for anyone under 25-30. Like someone else said, multiplex only makes sense if you’re over 40 (which I’m not). So literally in 10 years you can go through two different naming conventions and have literally the next generation not know what you are talking about

    Only choosing meaningful names really doesn’t work anymore. Stuff moves too fast, language moves too fast, and things change constantly.





  • For anyone coming later, I’d actually add a section between where you explain commands for the first time and where you explain their flags or at minimum directly after the flag section. The section should explain how commands are found, how the PATH works and where the majority of binaries on a Linux system are located. Knowing that will allow a reader to immediately understand how simple a shell is and how people are always able to write their own scripts for stuff.