the bottom line is: yes, you can use libraries (for this, you don't need much math), but to be a GREAT programmer, you need to be able to program things yourself (for this, you need math). If you can only piece together other peoples code (which you don't even remotely understand), then you are a tinkerer. It will be complete coincidence, when your code works reliably and fast.
once I wrote a program, that should create schedules for a tournament. It used backtracking (because back then I wasn't a computer scientist - just a tinkerer) and the program was so slow, that it could not be used (it must have been in O(n!^n) or so)
today I know the 1-factorization of complete graphs, by kirkman and reiß, which can do that in O(n^2)...
without deep math knowledge, I wouldn't even be able to find out, that the problem can be solved like that, because I wouldn't even be able to see that it can be stated by means of graph theory...
btw. here's a link to my program that creates tournament schedules in O(n^2)
Just look up, what the "relational" in "relational database" means... it stems from purest mathematical logics!
You need linear algebra and even up to full algebra (anisotropy) for 3d engines
artificial intelligence has lots to do with mathematical logic
most optimization problems have to do with graph theory - and logic
randomized algorithms: pure probability theory
string processing, regular expressions, compiler generation: lots of automata theory (which is closely related to graph theory)
deep, deep analysis for running time bounds (esp. for recursive programs)
lots and lots of logic for semantics
etc. etc. etc.
without profound knowledge of math, you are a tinkerer. you program off the top of your head. To really, deeply understand what you are doing, you need math!
bullshit! if you just botch together some code and are even unable to analyze the running time, let alone the correctness (since you don't even really know, what it's doing), then you are a tinkerer and your products will be shit! when they work, it'll be coincidence or luck that your customers don't get in the situations where your code fails.
and what do you do, when you don't find a library for some problem? or what do you do, if you have a library for doing something (say solving linear optimization problems), but you don't understand how to create its input from your problem (say it needs canonical linear programs)?
If you can understand simple arithmetic, you've got all the math skill you need to be a LOUSY programmer! a script kiddie!
I think your post is an insult to all the GOOD programmers, who develop the libraries you are using, you tinkerer!
I already hate when webpages open menus, just because I moved my mouse over them (and not even a damn delay - they open instantly, god damn it!) and I also hated mouse gestures, because I don't want the OS to interfere with what I'm doing, just because I coincidentally moved the mouse in a certain way...
that's why I think this (and also the mind-writing from earlier today) are very very VERY bad ideas... some people might find them exciting, but that's just people who haven't been around computers long enough to know all the (similar) bad ideas, that already existed before...
well for example hitler knew exactly, where the jews lived, so he could send the SS precisely to them. He knew where they lived, because a previous government had a population census, where they also collected the data about the religion of the people...
collecting sensitive data might seem inconsequential and be done without evil purpose, but you never know, what someone might do with them...
2010 - 1989 = 22?
but okay - I admit that the last time I used turbo pascal was before I learned what OOP is and my school teacher hadn't taught us about that feature. That TP actually has OOP was new to me.
In other news: the last version of Turbo Pascal is 18 years old, so who is behind the rest of the world now?
okay, okay - you'll tell me about Delphi now, I know... but let me tell you about parametric polymorphism, generic classes, multiple inheritance, operator overloading,...
I can already hear your excuses, that these features are unneccessary (yeah, syntactic sugar is for pussies! let's go back to ASM!), but I've worked with Delphi and the very first class I wrote would have needed multiple inheritance. Also the codes that I have seen were far, far, FAAAAAAAR bigger and unclearer than equivalent C++ codes would have been. So you can keep
using a school-kid programming language, that is not suitable for enterprise level programming (unless that enterprise likes paying twice as much for development, than needed)
dreaming about Pascal derivates being good enough
trashing ideas that can't be implemented in them
writing your classes dozens of times over and over again
making up increasingly confusing names for methods that basically do the same thing with different datastructures
while I use a programming language that can do f*ckin anything and that is widely used in the real world...
Most software (iirc 80% or so) today is written in C or C++
C++ is the mandatory language for nearly all well paid programming jobs
C++ makes it easy to learn Java (but not vice versa), which is also popular with employers
C is C++ for masochists. C++ has everything C has, but not vice versa
forget turbo pascal! that's an educational language, which is hardly used in the real world (esp. because of the lack of object orientation)
google dijkstras comment on BASIC
Python is OK, but not so widely used AND it's an interpreter language (automatic deduction of points)
I wouldn't use PHP, since it makes it hard to execute (you need to run a webserver with PHP support and browse to it) and PHP will be dead as soon as the http & html+js+css+flash+AJAX+... mess is cleaned up...
We have technologies, that are perfectly fine to create everything, that is neccessary...
make the webbrowser an X-Server and the webserver an X-Client (no, not vice versa - read about the server/client structure of X...)
make the webbrowser a Pulse Audio Server and the webserver a Pulse Audio Client
make the webbrowser an SSH Server and the server an SSHFS client, which mounts one of your local directories (that the webbrowser shares - this could be interfaced like the "download" dialog...)
another idea would be a transmission of a binary, that is run in a virtual machine, which runs some minimalistic linux...
It's just insane to put duct tape after duct tape on a filetype and a protocol, to add feature after feature. features, that the specifications were deliberately designed to not support! http for example was designed for just passive consumption (no sessions - this today makes web-developers use session ids in cookies and such) or html was not meant to be able to send data back.
all this added javascript, css, flash, AJAX, all the server-side stuff like php are mere duct tapes to (poorly) add stuff, that was deliberately left out in the first place...
In my opinion it is time to scrap all that legacy shit, start over from scratch and this time, do it right!
disassemblers could ignore bytes, based on some "code-reachability" measurement, but if you do the JMP in line 1 conditionally, you have won, because you can just use some first-order-logic tautology as condition for the jump - it would always be executed, but a disassembler would have to solve the halting problem (which is unsolvable) to decide, whether the following bytes are reachable...
I'm not sure, but I think you are mistaken. The code should just be put in an "array", not interpreted in any way and a JMP should be able to set the instruction pointer to a byte that isn't an instruction, but a parameter of an instruction (you'd have to change the bytecode manually in a hexeditor, because compilers and assemblers would not write the code this way)
let me illustrate this with an example - I think this is how anti-disassembler techniques work
1: JMP 3
2: JMP
3: Do something
1 jumps to byte no. 4, but when you try to disassemble this, byte no. 4 would be interpreted as the parameter of the JMP in line 2... In the same way, you should be able to fill your program with random junk - you just have to correct the jump destinations properly to not jump into the junk...
? I'm no assembler expert, but I think PUSH alters the stack pointer, RET uses the frame pointer to find the return address and that has been unaltered...
god, his arguments are total crap! "I can run a program inside my head, so a brain can do at least as much as a computer, but the brain is so complicated, that I don't understand it and thus a computer can not simulate it". What a gigantic pile of bullshit! a brain is a set of synapses and synapses can be simulated by a computer (see neuronal networks). Therefore a computer can simulate a brain as soon as he has a detailed copy of it. Thus a computer can do at least as much as a bain. maybe the computer needs much time, because the brain works in parallel, but that is just a question of computing power.
We don't understand by now, what signal the brain sends to cause the production of a new synapse (he's right about that), but this doesn't mean that this can not be simulated. creation of a new synapse will actually be just as easy as adding another row and column to a matrix. we just have to understand, what signal causes this and react accordingly in the simulation.
and now he argues that you can not simulate a brain with parallel processors because parallel computing can be serialized and thus his claim follows from the fact that you can not simulate a brain in serial computations. Great! A brain is not a brain! What a pile of hocus pocus bullshit!
hey genius! something isn't automatically wrong, just because you don't understand it, dumbass!
Okay, but YOUT tell their geat great great grand children, that they HAVE TO WORK - ALTHOUGH their great great great grandfather had one song in the transilvanian charts in 1850
without math skills I wouldn't have known where to look...
the bottom line is: yes, you can use libraries (for this, you don't need much math), but to be a GREAT programmer, you need to be able to program things yourself (for this, you need math). If you can only piece together other peoples code (which you don't even remotely understand), then you are a tinkerer. It will be complete coincidence, when your code works reliably and fast.
once I wrote a program, that should create schedules for a tournament. It used backtracking (because back then I wasn't a computer scientist - just a tinkerer) and the program was so slow, that it could not be used (it must have been in O(n!^n) or so)
today I know the 1-factorization of complete graphs, by kirkman and reiß, which can do that in O(n^2)...
without deep math knowledge, I wouldn't even be able to find out, that the problem can be solved like that, because I wouldn't even be able to see that it can be stated by means of graph theory... btw. here's a link to my program that creates tournament schedules in O(n^2)
without profound knowledge of math, you are a tinkerer. you program off the top of your head. To really, deeply understand what you are doing, you need math!
bullshit! if you just botch together some code and are even unable to analyze the running time, let alone the correctness (since you don't even really know, what it's doing), then you are a tinkerer and your products will be shit! when they work, it'll be coincidence or luck that your customers don't get in the situations where your code fails.
and what do you do, when you don't find a library for some problem? or what do you do, if you have a library for doing something (say solving linear optimization problems), but you don't understand how to create its input from your problem (say it needs canonical linear programs)?
If you can understand simple arithmetic, you've got all the math skill you need to be a LOUSY programmer! a script kiddie!
I think your post is an insult to all the GOOD programmers, who develop the libraries you are using, you tinkerer!
I already hate when webpages open menus, just because I moved my mouse over them (and not even a damn delay - they open instantly, god damn it!) and I also hated mouse gestures, because I don't want the OS to interfere with what I'm doing, just because I coincidentally moved the mouse in a certain way...
that's why I think this (and also the mind-writing from earlier today) are very very VERY bad ideas... some people might find them exciting, but that's just people who haven't been around computers long enough to know all the (similar) bad ideas, that already existed before...
well for example hitler knew exactly, where the jews lived, so he could send the SS precisely to them. He knew where they lived, because a previous government had a population census, where they also collected the data about the religion of the people...
collecting sensitive data might seem inconsequential and be done without evil purpose, but you never know, what someone might do with them...
"Yeah, well I have a big gang of marauders"
with hookers! and blackjack!
infact - forget the gang!
noun gerund noun noun gerund adjective - WTF!?
is sentence structure really that hard? how about
? /. headlines? lately you see lots like this one. It looks like
someone had thrown a dictionary into a blender...
What is up with
but okay - I admit that the last time I used turbo pascal was before I learned what OOP is and my school teacher hadn't taught us about that feature. That TP actually has OOP was new to me.
In other news: the last version of Turbo Pascal is 18 years old, so who is behind the rest of the world now?
okay, okay - you'll tell me about Delphi now, I know... but let me tell you about parametric polymorphism, generic classes, multiple inheritance, operator overloading,...
I can already hear your excuses, that these features are unneccessary (yeah, syntactic sugar is for pussies! let's go back to ASM!), but I've worked with Delphi and the very first class I wrote would have needed multiple inheritance. Also the codes that I have seen were far, far, FAAAAAAAR bigger and unclearer than equivalent C++ codes would have been. So you can keep
while I use a programming language that can do f*ckin anything and that is widely used in the real world...
so what is easier in C, than in C++? write ANY C code, run it through a C++ compiler and you have proof that it is AT LEAST as easy in C++ as in C...
go and ask the survivors of the holocaust, why this is a fucking bad idea!
another idea would be a transmission of a binary, that is run in a virtual machine, which runs some minimalistic linux...
It's just insane to put duct tape after duct tape on a filetype and a protocol, to add feature after feature. features, that the specifications were deliberately designed to not support! http for example was designed for just passive consumption (no sessions - this today makes web-developers use session ids in cookies and such) or html was not meant to be able to send data back.
all this added javascript, css, flash, AJAX, all the server-side stuff like php are mere duct tapes to (poorly) add stuff, that was deliberately left out in the first place...
In my opinion it is time to scrap all that legacy shit, start over from scratch and this time, do it right!
disassemblers could ignore bytes, based on some "code-reachability" measurement, but if you do the JMP in line 1 conditionally, you have won, because you can just use some first-order-logic tautology as condition for the jump - it would always be executed, but a disassembler would have to solve the halting problem (which is unsolvable) to decide, whether the following bytes are reachable...
let me illustrate this with an example - I think this is how anti-disassembler techniques work
1 jumps to byte no. 4, but when you try to disassemble this, byte no. 4 would be interpreted as the parameter of the JMP in line 2... In the same way, you should be able to fill your program with random junk - you just have to correct the jump destinations properly to not jump into the junk...
? I'm no assembler expert, but I think PUSH alters the stack pointer, RET uses the frame pointer to find the return address and that has been unaltered...
programs (like AV) can not understand programs - see Rice's Theorem...
That line is from S16E15 "Future Drama", where Homer has an underwater flat and his garden furniture is stolen by flounders... Yeah, I'm a nerd...
Homer: Stupid Flounders
it's funny that his name means "learnt"/"educated"/"skilled" in german...
god, his arguments are total crap! "I can run a program inside my head, so a brain can do at least as much as a computer, but the brain is so complicated, that I don't understand it and thus a computer can not simulate it". What a gigantic pile of bullshit! a brain is a set of synapses and synapses can be simulated by a computer (see neuronal networks). Therefore a computer can simulate a brain as soon as he has a detailed copy of it. Thus a computer can do at least as much as a bain. maybe the computer needs much time, because the brain works in parallel, but that is just a question of computing power.
We don't understand by now, what signal the brain sends to cause the production of a new synapse (he's right about that), but this doesn't mean that this can not be simulated. creation of a new synapse will actually be just as easy as adding another row and column to a matrix. we just have to understand, what signal causes this and react accordingly in the simulation.
and now he argues that you can not simulate a brain with parallel processors because parallel computing can be serialized and thus his claim follows from the fact that you can not simulate a brain in serial computations. Great! A brain is not a brain! What a pile of hocus pocus bullshit!
hey genius! something isn't automatically wrong, just because you don't understand it, dumbass!
to be fair: correlation is not causation.
when we say that for every correlation we don't like, we have to say it for correlations we like...
the german law 69d UrhG allows cracking of software that you legally own and that won't work otherwise...
Okay, but YOUT tell their geat great great grand children, that they HAVE TO WORK - ALTHOUGH their great great great grandfather had one song in the transilvanian charts in 1850