[ rss / options / help ]
post ]
[ b / iq / g / zoo ] [ e / news / lab ] [ v / nom / pol / eco / emo / 101 / shed ]
[ art / A / beat / boo / com / fat / job / lit / map / mph / poof / £$€¥ / spo / uhu / uni / x / y ] [ * | sfw | o ]

Return ]

Posting mode: Reply
Reply ]
Subject   (reply to 6289)
File  []
what computer programming is like.png
>> No. 6289 Anonymous
9th March 2018
Friday 12:58 pm
6289 spacer
I just finished reading Richard Szelinski's "Computer Vision" and some of the older papers he cites. What strikes me is how childishly simple the algorithms are. Most of the complexity of recent years is just layers of abstraction and obfuscation. In some cases, modern algorithms are actually slower or less accurate because important discoveries were forgotten in the process of obfuscation.

So I can heartily recommend Szelinski's book as well as "Natural Language Processing with Python" by Bird, Klein and Loper (only the 1st edition, though).

Any other clear, non-obfuscated guides to statistics & ML? I am most interested in natural language processing, although there is a fair amount of overlap between fields.
Expand all images.
>> No. 6290 Anonymous
9th March 2018
Friday 6:08 pm
6290 spacer
Thanks for your "hearty" recommendation.
>> No. 6291 Anonymous
9th March 2018
Friday 7:34 pm
6291 spacer

She pointed at the beige hardware. "How come this old shit is always that same color?"

His forehead creased. "There are two theories. One is that it was to help people in the workplace be more comfortable with radically new technologies that would eventually result in the mutation or extinction of the workplace. Hence the almost universal choice, by the manufacturers, of a shade of plastic most often encountered in downscale condoms." He smirked at Chevette.

"Yeah? What's two?"

"That the people who were designing the stuff were unconsciously terrified of their own product, and in order not to scare themselves, kept it looking as unexciting as possible. Literally 'plain vanilla,' you follow me?"

Chevette brought her finger close to the microbot; it did a funny little fall-back-and-shuffle to avoid being touched. "So who's into this old stuff? Collectors?"

"You'd think so, wouldn't you?"



"I don't get it," Chevette said.

"Consider," he said, holding out his hand to let the little 'bot offer him the driver, "that when this stuff was new, when they were writing multi-million-line software, the unspoken assumption was that in twenty years that software would have been completely replaced by some better, more evolved version." He took the driver and gestured with it toward the hardware on the shelves. "But the manufacturers were surprised to discover that there was this perverse but powerful resistance to spending tens of millions of dollars to replace existing software, let alone hardware, plus retraining possibly thousands of employees. Follow me?" He raised the driver, sighting down its shaft at her.

"Okay," Chevette said.

"So when you need the stuff to do new things, or to do old things better, do you write new stuff, from the ground up, or do you patch the old stuff?"

"Patch the old?"

"You got it. Overlay new routines. As the machines got faster, it didn't matter if a routine went through three hundred steps when it could actually be done in three steps. It all happens in a fraction of a second anyway, so who cares?"

"Okay," Chevette said, "so who does care?"

"Smart cookies," he said and scratched his soul patch with the tip of the driver. "Because they understand that all that really happens, these days, is that ancient software is continually encrusted with overlays, to the point where it's literally impossible for any one programmer to fully understand how any given solution is arrived at."

"I still don't see why this stuff would be any help."

"Well, actually," he said, "you're right." He winked at her. "You got it, girl. But the fact remains that there are some very smart people who like to have this stuff around, maybe just to remind themselves where it all comes from and how, really, all any of us do, these days, is just fixes. Nothing new under the sun, you know?"
>> No. 6292 Anonymous
9th March 2018
Friday 8:13 pm
6292 spacer
Okay. I'm going to qualify my sarky comment. You've just read Computer Vision 101. Based on that, and "some of the older papers" you've realised that "most of the complexity of recent years is [...] obfuscation". Given what you're related of your background, you aren't in a position to know that. Programming is accomplished by breaking down big tasks into many little ones, and if it psychologically helps you to tackle CV programming by reducing its limits to a a single textbook and a handful of papers, do so - but it is wishful thinking rather than a reflection on reality. Reality: N-hundred thousand researchers advance the field at a rate many orders of magnitude greater than your rate of information intake.

>> No. 6293 Anonymous
9th March 2018
Friday 9:16 pm
6293 spacer

Do you need some Vaseline to get your over-sized head out of your own arse have you come to enjoy the stench of your own farts?
>> No. 6295 Anonymous
10th March 2018
Saturday 12:05 am
6295 spacer
> Most of the complexity of recent years is just layers of abstraction and obfuscation

Actually it is all the fixes for when that old stuff didn't work patched over the top.
I used to manipulate large volumes of data but the principle I'm about to talk about could be applied to anything. Every time you program anything new it will work 90% of the time (this is what those simple algorithms you are talking about do). So what happens with that next 10%, well the majority of those will all be the same problem (again about 90%) so you add more to the code, this is probably another simple algorithm, but now your code is twice as long as before and you are left with 1% not working. Depending on how big your scope is and how much that exception matters you can stop there, but if you are expecting it to be applied million times then that 1% is then thousand times the code fails to do what it is supposed to do, so you narrow down again you would think this would be a simple fix but actually this requires adding in conditions that double the code size again, to 0.1% and so on, until your very simple formula is riddled with conditionals with the smaller the percentage you need to cover requiring more.

Every time there is a bug in released piece of software discovered and it is patched what is happening is that once very elegant solution is gradually turning into a hulking conditional mess, so that what once looked lovely childishly simple algorithm in the lab needs to become a leviathan to perform in the real world.
>> No. 6296 Anonymous
10th March 2018
Saturday 12:20 pm
6296 spacer
Can confirm this. Around a quarter of my time at work is taken up by one piece of code that is supposed to do something relatively simple, but because it's literally a matter of life and death it has dozens of special cases in there.

If anyone's interested in reading more about how this shit happens, check out Raymond Chen's The Old New Thing. He's the lead on the Windows compatibility team, which adds special cases for all the software out there that relied on undocumented behaviour.
>> No. 6297 Anonymous
10th March 2018
Saturday 3:01 pm
6297 spacer
Wow, there's a whole lot of salt in this thread but (unsurprisingly) no suggestions.

> it is all the fixes for when that old stuff didn't work patched over the top.

Thanks; I know what you mean, and I can see that in the newer and more application-specific papers. Cutting-edge stuff is always hard to read for a number of reasons. I'm just looking for good introductions to the basic stuff that is NOT cutting-edge.
>> No. 6298 Anonymous
10th March 2018
Saturday 5:46 pm
6298 spacer
Nowadays it isn't so much the algorithms that are at fault, its the sixteen layers of software between you and the hardware.

Let's imagine you write any program and deploy it using Docker on AWS, as all the cool kids are wont to do. There are many, many, many layers of operating system, hypervisor, virtual machine and abstraction between you and the hardware - it is rarely the underlying algorithm at fault. I think the cloud will go out of fashion and we'll all go back to microkernels. See also: modern Javascript frameworks like React etc.

The other aspect of programming is that almost every engineer, particularly when they are junior, wants to save the world and over-engineers and gold-plates everything they do. It is a very common problem.

Less is more, simple is best, but it takes a few years of doing it wrong before you truly get that.
>> No. 6299 Anonymous
11th March 2018
Sunday 2:04 pm
6299 spacer
>See also: modern Javascript frameworks like React etc.
Oh Jesus fuck. I know, I'll just create a "hello world" type project, now I just have to wait for npm to pull in 800 fucking dependencies.

Also, could JS in general just fuck off already? This "let's just do everything in a browser" joke is getting really tired now.
>> No. 6300 Anonymous
11th March 2018
Sunday 3:26 pm
6300 spacer
I have no idea how to even begin learning anything about software.

I don't understand how people become software engineers.
>> No. 6301 Anonymous
11th March 2018
Sunday 4:15 pm
6301 spacer

They learn about software, presumably.
>> No. 6302 Anonymous
11th March 2018
Sunday 5:34 pm
6302 spacer

The way I learned was by reading text books and solving self set problems. I'm sure there are better ways but that kind of grind works for me.
>> No. 6303 Anonymous
11th March 2018
Sunday 6:50 pm
6303 spacer

Summon up some proper willpower, be prepared to put aside an hour or two each day, & google & follow 'Learn Python the Hard Way'. (Assuming you can deal with the author's style.)

The book looks paid last I checked, but there's a link on the very same page to the free version which is identical.

The author is a bit of an asshole but the book will tell you how to get started in very clear and unambiguous terms. If you actually follow his advice you can't help but learn to program.
>> No. 6304 Anonymous
12th March 2018
Monday 1:23 pm
6304 spacer
You need an excuse to do it - thats the first part that beginners struggle with. You can pick up all the books you want, and there are many, but its that thinking, "Oh, I want to write a program that does X" that gets you going. Think of your other hobbies or interests, find a program to write there.

If I was starting again nowadays, I would find a bunch of tiny little websites to produce for other people - blogs, 3 page sites for a local club or one-man business, that is where I would start. If you haven't got excuses to code-for-real, I think its quite difficult to pick up.
>> No. 6305 Anonymous
12th March 2018
Monday 7:36 pm
6305 spacer
"Oh I'll write a program to do X. What the fuck's a program?"
>> No. 6307 Anonymous
12th March 2018
Monday 8:17 pm
6307 spacer


That's like expecting someone to learn how to fix a car without bothering to look at the engine. You've got to start from the ground up.


Great advice. I'd 'wanted to get into' programming for fucking ages, but I never really started until I realised that it'd serve my other hobbies well.

The more I learn though the more I realised I've been programming for years, just in visual environments like Max or PD. It sounds daft to say but I'd never really grasped that 'visual programming' was still programming. If only I'd gone one step further in to related, proper languages back in the day. I managed to make a drum machine in max that could 'learn' a drum pattern from an audio input in uni, so without blowing my own trumpet I think I might have the knack for this sort of thing.

I'm only at a very basic level of Python right now, but I'm really thinking of sacking off my current career in favour of a graduate scheme/apprenticeship in development. I think I'd enjoy it more than the non-job I have now. Sage for existential musing.
>> No. 6310 Anonymous
12th March 2018
Monday 10:44 pm
6310 spacer
You're not going to be a programmer if you can't figure that bit out - that is page one stuff. You're using a browser to read these words. Thats a program. You're going to switch to using Steam (a program) or Netflix (a program) when you're bored of that. When you're using this site, a series of programs run in your browser to show you it. Sure, these are large programs with many components and libraries, but its the same idea. A thing that just prints "Hello World" and beeps at you, thats a program. I think the kids call them "apps" now, but its all the same thing. A set of organised, sequenced commands that make a computer do something. You can write, produce, package it up and deliver it in many many different ways, but its all the same thing. A program, a piece of code.

A decent Excel spreadsheet is a program, there is no limit to the simplicity or complexity of a piece of code. You're definitely on the right path by understanding that visual environments are just as good (you can program in PowerPoint FFS) and using that approach to get to Python.

Once you've hit a "proper" (and I use that word very carefully because there is far too much ego in technology) programming environment like Python, Golang, Ruby, PHP, Java, C#, whatever the fuck you take to, you're on the path to doing it as a living. How you get to those environments is entirely up to you and everyone is different. The actual language choices you make are irrelevant (it takes many years of geekery to get over yourself before you can say that with authority).

Enjoying it is 90% of the problem. Sounds like you have the knack.
>> No. 6311 Anonymous
13th March 2018
Tuesday 12:50 am
6311 spacer
I know what a program is, I was making the point that there is seemingly no point of entry. I've sat down and done extremely basic programming problems before, but what's the advancement? What have I achieved writing all these semi colons? What have I learnt? How does one 'make' a program?

It just seems impenetrable to me. Not necessarily at an intellectual level, but as a Thing.
>> No. 6312 Anonymous
13th March 2018
Tuesday 1:11 am
6312 spacer

You might as well ask how a collection of cells makes a person? Seemingly impossible tasks are just a series of possible tasks put together.
>> No. 6313 Anonymous
13th March 2018
Tuesday 1:55 am
6313 spacer
But that's my point about needing to find a reason to do it - the point of entry is thinking "this is a problem I want to solve" - in the early days of learning programming you have to contrive that. With practice, you'll create more complex systems that actually solve a real problem and if you can keep doing that, you will be a real programmer who earns money doing this, solving other peoples actual problems.

What is the most popular word over five letters used on .gs? How many minutes per month do you spend here?
You have a folder on your computer full of images, music and text files - how would you create a simple way of browsing them?
Your hobby is bird watching, how would you create a database that records what you observe, with images?
Your local kids football club needs a way of managing all their players and statistics for games
You and your mates play the same video game every Friday - how do you record the scores and performance every week to create a league table?
You setup a webcam that points out your front window - create me a simple HTML page you view in a browser that shows all the colours of the different cars that pass by? Bonus points - you recognise all the number plates.

I don't know what the fuck you're interested in, but whatever it is, you can create programs to help you. Start on that path, initially they will be contrived and fake, but with practice, they will become real.
>> No. 6314 Anonymous
13th March 2018
Tuesday 2:55 am
6314 spacer


> Your local kids football club needs a way of managing all their players and statistics for games

Now then, now then.
>> No. 6315 Anonymous
13th March 2018
Tuesday 2:56 am
6315 spacer

If you've already completed an introductory course in programming, I'd recommend Codewars. It's a series of real-world programming problems presented a bit like a puzzle game. You complete each "level" when the code you've written passes a set of pre-determined tests. Once you've solved some of these problems, you should start to see how your skills can be used to solve real problems.


If you haven't completed a beginner's course, then pick a good one that's based on practical project-based learning. For example, Udacity's Intro to Computer Science course teaches you how to build a basic search engine and social network using Python. Other courses structure their teaching around games or mobile apps. Learning how to break down an apparently insurmountable problem into lots of little chunks is arguably the most important skill in software development.

>> No. 6316 Anonymous
13th March 2018
Tuesday 10:20 am
6316 spacer

>How many minutes per month do you spend here?

Well that's got to be my first 'solo' project for sure. I don't think I truly want to know, mind.

I do appreciate the way you talk about this stuff, though, it definitely inspires me, for lack of a less poncy word. Expect a few related question posts sneakily targeted at you over the coming few months.

Return ]

Delete Post []