Spyke

As a software developer, the less ambiguous your notation is, the better it is for everyone involved. Not only will I use brackets, I'll split my expression into multiple rows and use tabs to make it as readable as humanly possible. And maybe throw a comment or 2 if there's still some black magic involved

219
Mikufanreply
ani.social

No just write the entire code in one line totally perfect.

80
Mikufanreply
ani.social

"don't worry, you just need this simple one-liner to fix your project"

30
Morphitreply
feddit.uk

The one-liner: *parses HTML with a regex*

20
lemmy.one

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(c)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); }

10
FreshLightreply
sh.itjust.works

I tried to read that out loud and summoned something. Please help me, I'm scared.

8

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.

5
reddthat.com

For real though, I have written some truly monstrous operations in Excel.

What do you mean you want to use Excel to manage everyone’s calendars? And now you want to export that horribly built calendar management spreadsheet to Google Calendar? What do you mean you want the Google Calendar entries automatically formatted based on who is working on a particular day? I mean yes it’s possible but-…

13
dustyDatareply
lemmy.world

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.

65

Exactly. You read code way more times than you write it, so it makes all the sense in the world to prioritize readability.

18
oce πŸ†reply
jlai.lu

Python forcing end of line and tabs kinda does. Add Black auto-formatter and it's pretty good.

7
frezikreply
midwest.social

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.

1

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.

2

Yep, if you're writing code for a machine, just do it in binary to save compilation time (/s just in case). 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

6

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

20

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.

2
lemmy.world

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.

58
neidu2reply

As someone who used to code in Lisp, I'm all for excessive paranthesis use.

1
discuss.tchncs.de

Ok man. Wtf did I just watch...

I get it. We are here on the somehow dark side of the internet..

But THIS.... without any context. i mean. Im questioning live here man. What do you want to express with that?

3
janNatanreply
lemmy.ml

I'm pretty sure it's just a reference to when the kid types ))<>((

Btw, it's not from the dark side of the Internet. This was a very popular video at the time.

10
trslimreply
pawb.social

My husband showed me that video last night. It was very strange.

1
Qkallreply

Somehow that clip is better than the fairly odd movie. I don't think I could recommend it... But I think of the clip posted all the time. It's so weird πŸ˜‚. Some how they figured out creepy, funny, and somehow wholesome at once.

2

I still have my HP 48 series calculator. It's a sturdy beast.

5
literature.cafe

Internalized PEMDAS without knowing it's literally the same thing as BODMAS is exactly the problem!

7
TheOakTreereply
lemm.ee

Same as PEMDAS, except:

Parentheses -> Bracket

Exponent -> Order

Multiplication <-> Division

BODMAS

4
lemmy.ca

I learned it as "BEDMAS"

Brackets

Exponents

(You can guess the rest)

But when I learned BEDMAS, my teacher directed us to do implied multiplication before other multiplication/division. Which, as far as I'm aware, is mathematically correct according to the proper order of operations (instead of whatever acronym summary you learned).

Before I get "umm. Acktually"d .... I know that's not the full picture of the order of operations as it should be in mathematics. But for the limited scope I learned of algebra from highschool, AFAIK, this is correct to the point that I have understanding of. I'm not a mathematician, and I work with computers all day long and they do the math for me when I need to do any of it. So higher understanding in my case is not helpful.

2
strawberryreply
kbin.run

order? how does that make sense? brackets alright ig

1

Order is often used to describe exponents when talking about functions and other mathematical properties. In a lot of cases, it's also equivalent to a degree. For example, a function y = xΒ² - 9 is a second-order/degree polynomial.

Alternatively, one could find a second-order rate of a reaction, which means the rate of reaction is proportional to the square of a solution's concentration.

3

You have the right idea, and you are right in some regards. Generally the order of magnitude is an order of 10. That is, 1350 could be represented as 1.350Γ—10Β³, so the order of magnitude is the third order of 10, which is 10Β³ (i.e. some value xΓ—1000).

4
itsralCreply

Counterpoint: C function pointers (or just C in general)

2
lemmy.world

Also: sometimes, a mathematician just has to invent some concept or syntax to convey something unconventional. The specific use of subscript/superscript, whatever 'phi' is being used for, etc. on whatever paper you're reading doesn't have to correlate to how other work uses the same concepts. It's bad form, but sometimes its needed, and if useful enough is added to the general canon of what we call "math". Meanwhile, you can encapsulate and obfuscate things in software, sure, but you can always get down to the bedrock of what the language supports; there's no inventing anything new.

2
ByGouroureply
sh.itjust.works

Isn't the "-" order of operations the same as a multiply ? I think I learned powers take priority over the "-" so your calculator would be right.
But either way if it can cause confusion you should use parentheses.

7
mander.xyz

Every calculator I've used has separate negative and subtraction keys for this purpose. There is no order of operations to follow, it's just a squaring a number

3
ByGouroureply
sh.itjust.works

I learned negative as being a separate operation where we need to apply the order of operations. I think it was something like : -2 is a diminutive for -1x2 so it uses the order of operations of a multiplication.
My calculator is the official one used in schools in France (ti-83 premium ce) and it says -2^2 = -4 with the negative key. I don't think it would make a mistake in such a simple concept.

But whatever these concepts can change depending on the field, country, level of education. What I mean is : it's unclear, so use parentheses. So (-2)^2 or -(2^2) are the correct ways to write it.

3
Ultravioletreply
lemmy.world

I would never write -nΒ². Either ‐(nΒ²) or (-n)Β². Order of operations shouldn't be some sort of gotcha to trick people into misinterpreting you, it's the intuitive reading of a well constructed mathematical expression.

3
reddthat.com

I've never seen a calculator that had bracket keys but didn't implement the conventional order of operations.

But anyway, I'm on Team RPN.

5
lolcatnipreply
reddthat.com

Ah, I wasn't thinking of calculators that let you type in a full expression. When I was in school, only fancy graphing calculators had that feature. A typical scientific calculator didn't have juxtaposition, so you'd have to enter 6Γ·2(1+2) as 6Γ·2Γ—(1+2), and you'd get 9 as the answer because Γ· and Γ— have equal precedence and just go left to right.

0

A typical scientific calculator didn’t have juxtaposition, so you’d have to enter 6Γ·2(1+2) as 6Γ·2Γ—(1+2)

That's not true

you’d get 9 as the answer because Γ· and Γ— have equal precedence and just go left to right

Well, more precisely you broke up the single term 2(1+2) into 2 terms - 2 and (1+2) - when you inserted the multiplication symbol, which sends the (1+2) from being in the denominator to being in the numerator. Terms are separated by operators and joined by grouping symbols.

0
lolcatnipreply
reddthat.com

I'm not sure what you're getting at with your source. I'm taking about physical, non-graphic scientific calculators from the 1990s.

0
feddit.de

I recall that there is a myriad of memes of the form 'what is 4-2*3' under which there is always a never ending discussion of confidently incorrect dumbasses denying the existence of the multiplication before addition rule.

So your suspicion is at least not unreasonable

3