As a professor said, most programming languages don’t care about readability and whitespace. But we care because humans need it to parse meaning. Thus, write code for people, not for the machine. Always assume that someone with no knowledge of the context will have to debug it, and be kind to them. Because that someone might be you in six months when you have completely forgotten how the code works.
Comment on ))<>((
rockerface@lemm.ee 10 months ago
As a software developer, the less ambiguous your notation is, the better it is for everyone involved
dustyData@lemmy.world 10 months ago
zalgotext@sh.itjust.works 10 months ago
Exactly. You read code way more times than you write it, so it makes all the sense in the world to prioritize readability.
Swedneck@discuss.tchncs.de 10 months ago
Source code is for humans, then the compiler turns it into code for machines.
oce@jlai.lu 10 months ago
Python forcing end of line and tabs kinda does. Add Black auto-formatter and it’s pretty good.
frezik@midwest.social 10 months ago
I’ve seen too many Python devs write out complex statements all on one crammed up line. Including some that are in the main docs.
Enforced whitespace is just one aspect of readable code. There are many others, and Python is no better at enforcing those than any other language.
oce@jlai.lu 10 months ago
That would probably make very long lines and black would automatically add returns to line with proper indentations. But it has a a limit for sure. If you chain many list comprehensions it’s going to be a mess.
feinstruktur@lemmy.ml 10 months ago
This. Always be kind to your future self.
rockerface@lemm.ee 10 months ago
Yep, if you’re writing code for a machine, just do it in binary to save compilation time. Also, you in six months will indeed be someone with no knowledge of the context. And every piece of code you think you write for one-time use is guaranteed to be reused every day for the next 5 years
Mic_Check_One_Two@reddthat.com 10 months ago
snowsuit2654@lemmy.blahaj.zone 10 months ago
Yeah I totally agree. You can minimize and optimize as part of your build procedure/compilation but the source code should be as readable as possible for humans.
Quetzalcutlass@lemmy.world 10 months ago
I had someone submit a pull request recently that, in addition to their actual changes, also removed every single parenthesis that wasn’t strictly necessary in a file full of 3D math functions. I know it was probably the fault of an autoformatter they used, but I was still the most offended I’ve ever been at a pull request.
rockerface@lemm.ee 10 months ago
Autoformatter? More like obfuscator
MotoAsh@lemmy.world 10 months ago
I genuinely hate being human for this stuff. So many things have such crazy computational shortcuts, it’s sometimes difficult to remember which part represents reality. Outside of the realm of math, where “imaginary” numbers are still a touch of enigma to me, so many algorithms are based on general assumptions about reality or the specific task, that the programmatic approach NEVER encapsulates the full scope of the problem.
As in, sometimes if you know EXACTLY how a tool works, you might still have no idea about the significance of that tool. Even in a universe where no one is lazy, and everyone wants to know “why?”, the answers are NOT forthcoming.
stebo02@lemmy.dbzer0.com 10 months ago
Ok but that’s unrelated to putting some numbers and operations in a calculator. No one is going to proofread that. If anything, you simply calculate it again.
penquin@lemm.ee 10 months ago
You’re a good human being.
neidu2@feddit.nl 10 months ago
As someone who used to code in Lisp, I’m all for excessive paranthesis use.
Mikufan@ani.social 10 months ago
No just write the entire code in one line totally perfect.
rockerface@lemm.ee 10 months ago
Calm down, Satan
Mikufan@ani.social 10 months ago
“don’t worry, you just need this simple one-liner to fix your project”
Morphit@feddit.uk 10 months ago
The one-liner: *parses HTML with a regex*
zqwzzle@lemmy.ca 10 months ago
That almost seems cute next to the shit the obfuscated c contest pulls off. www.ioccc.org/years.html
Bandicoot_Academic@lemmy.one 10 months ago
For some context this is one of the winning entries:
#include <stdio.h>
#define N(a) “%”#a"$hhn" #define O(a,b) “%10$”#a"d"N(b) #define U “%10$.*37$d” #define G(a) “%”#a"$s" #define H(a,b) G(a)G(b) #define T(a) a a #define s(a) T(a)T(a) #define A(a) s(a)T(a)a #define n(a) A(a)a #define D(a) n(a)A(a) #define C(a) D(a)a #define R C(C(N(12)G(12))) #define o(a,b,c) C(H(a,a))D(G(a))C(H(b,b)G(b))n(G(b))O(32,c)R #define SS O(78,55)R “\n\033[2J\n%26$s”; #define E(a,b,c,d) H(a,b)G©O(253,11)R G(11)O(255,11)R H(11,d)N(d)O(253,35)R #define S(a,b) O(254,11)H(a,b)N(68)R G(68)O(255,68)N(12)H(12,68)G(67)N(67)
char* fmt = O(10,39)N(40)N(41)N(42)N(43)N(66)N(69)N(24)O(22,65)O(5,70)O(8,44)N( 45)N(46)N (47)N(48)N( 49)N( 50)N( 51)N(52)N(53 )O( 28, 54)O(5, 55) O(2, 56)O(3,57)O( 4,58 )O(13, 73)O(4, 71 )N( 72)O (20,59 )N(60)N(61)N( 62)N (63)N (64)R R E(1,2, 3,13 )E(4, 5,6,13)E(7,8,9 ,13)E(1,4 ,7,13)E (2,5,8, 13)E( 3,6,9,13)E(1,5, 9,13)E(3 ,5,7,13 )E(14,15, 16,23) E(17,18,19,23)E( 20, 21, 22,23)E (14,17,20,23)E(15, 18,21,23)E(16,19, 22 ,23)E( 14, 18, 22,23)E(16,18,20, 23)R U O(255 ,38)R G ( 38)O( 255,36) R H(13,23)O(255, 11)R H(11,36) O(254 ,36) R G( 36 ) O( 255,36)R S(1,14 )S(2,15)S(3, 16)S(4, 17 )S (5, 18)S(6, 19)S(7,20)S(8, 21)S(9 ,22)H(13,23 )H(36, 67 )N(11)R G(11)""O(255, 25 )R s(C(G(11) ))n (G( 11) )G( 11)N(54)R C( “aa”) s(A( G(25)))T (G(25))N (69)R o (14,1,26)o( 15, 2, 27)o (16,3,28 )o( 17,4, 29)o(18 ,5,30)o(19 ,6,31)o( 20,7,32)o (21,8,33)o (22 ,9, 34)n(C(U) )N( 68)R H( 36,13)G(23) N(11)R C(D( G(11))) D(G(11))G(68)N(68)R G(68)O(49,35)R H(13,23)G(67)N(11)R C(H(11,11)G( 11))A(G(11))C(H(36,36)G(36))s(G(36))O(32,58)R C(D(G(36)))A(G(36))SS
#define arg d+6,d+8,d+10,d+12,d+14,d+16,d+18,d+20,d+22,0,d+46,d+52,d+48,d+24,d
+26,d+28,d+30,d+32,d+34,d+36,d+38,d+40,d+50,(scanf(d+126,d+4),d+(6
-2)+18*(1-d[2]%2)+d[4]*2),d,d+66,d+68,d+70, d+78,d+80,d+82,d+90,d+
92,d+94,d+97,d+54,d[2],d+2,d+71,d+77,d+83,d+89,d+95,d+72,d+73,d+74
,d+75,d+76,d+84,d+85,d+86,d+87,d+88,d+100,d+101,d+96,d+102,d+99,d+
67,d+69,d+79,d+81,d+91,d+93,d+98,d+103,d+58,d+60,d+98,d+126,d+127,
d+128,d+129
char d[538] = {1,0,10,0,10};
int main() { while(*d) printf(fmt, arg); }
FreshLight@sh.itjust.works 10 months ago
I tried to read that out loud and summoned something. Please help me, I’m scared.
Swedneck@discuss.tchncs.de 10 months ago
this straight up looks like a chemical formula
blanketswithsmallpox@lemmy.world 10 months ago
If I cross my eyes hard enough on mobile… I imagine I can see dickbutt in there somewhere…
dejected_warp_core@lemmy.world 10 months ago
Further up the thread, someone mentioned that writing good software is about communicating concepts to people, first and foremost.
This, code obfuscation, is what it looks like to communicate exclusively to the compiler instead.
CommissarVulpin@lemmy.world 10 months ago
Excel has entered the chat
Mic_Check_One_Two@reddthat.com 10 months ago
For real though, I have written some truly monstrous operations in Excel.
CommissarVulpin@lemmy.world 10 months ago
VBA has made things so, so much easier since I started learning how to use it.
MigratingApe@lemmy.dbzer0.com 10 months ago
Well, this is exactly what mathematicians do.