Test predicts ability to learn programming

Anything not relating to the X-Universe games (general tech talk, other games...) belongs here. Please read the rules before posting.

Moderator: Moderators for English X Forum

User avatar
Morkonan
Posts: 1907
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Mon, 8. Jan 18, 20:50

Chips wrote:
Morkonan wrote: Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)
Erm, you realise programming languages and writing programs is a huge abstraction from machine code?
Yes.
A normal person has no need to understand chemistry, or biology, or anything beyond ... every day simple tasks.

A rounded education should include some aspect, understanding, appreciation, for the very means by which you interact with the world - which is increasingly via computers. And the engagement of brain may do the good old "transferable skills" aspect; problem solving etc.
I agree, wholeheartedly. But, what is the purpose of "computer?" Why does a user have one? The user should have a basic understanding of how their computer works and they should, ideally, understand how to accomplish the desired, and suitable, tasks with it. Ideally, those tasks should be designed to be easy to accomplish, the tools easy to use, and nothing those standard, mundane, tasks require should, by necessity, go beyond the "user environment."

I'm not in favor of restraining use. I'm simply pointing out that a computer is a tool and as its design becomes better, so will its overall capabilities for use. Valuable, productive, and efficient users are possible without those users being required to do more than operate within the user environment. They don't need to know how to "code." A basic understanding of most things "computer" will be helpful, but nothing beyond that is necessary in a well-designed user environment.

User avatar
Chips
Posts: 824
Joined: Fri, 19. Mar 04, 20:46
x3tc

Post by Chips » Mon, 8. Jan 18, 21:36

I would ask whether you believe in education, but the answer is undoubtedly going to be too long to hold my interest - given we're on a forum on the internet. Life is too short.

So computer is just a tool, fine.

User avatar
mrbadger
Posts: 5650
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Mon, 8. Jan 18, 21:44

Chips wrote:If the bit about console is related to a programming course, then it is fundamentally necessary.
I agree, but how? There are many ways to use the terminal. I teach the use of Linux standard CLI tools, and Git, Mercurial, SSH and the like.

Or how to activate shared libraries for a session, like OpenMP, or OpenMPI, since I'm buggered if I'll give them sudo access, and I doubt they'd always get it in their jobs, so it's a useful skill.

But then there's server admin terminal stuff, of which I only know Linux stuff, not Windows, and Windows is probably important. I have neither the skill, time, or equipment to teach them the Windows stuff. Powershell matters, but not in my classes.

My point is, there are many ways to use the terminal, so which do you teach?

I tend to scare students with my 'simple' CLI worksheets. Mostly because even the good students tend to have no idea just how much you can do with the terminal.

The bad ones who think they can leave them till the last minute just freak out and fail.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

Nanook
Moderator (English)
Moderator (English)
Posts: 25955
Joined: Thu, 15. May 03, 20:57
x3tc

Post by Nanook » Tue, 9. Jan 18, 00:53

Chips wrote:I would ask whether you believe in education....
So computer is just a tool, fine.
Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? Their education lies in a different direction. It doesn't mean they're less educated. They can successfully make use of computers as tools to do their jobs without knowing any coding at all. For that matter, what use is coding to the average home computer user? They use browsers, email, home office software and perhaps do some gaming. To say that all computer users should learn how to code is just silly and to imply that they're less educated is a bit arrogant, IMO.
Having an Acronym Attack? See the Ego FAQ. Also now for Terran Conflict and Albion Prelude.
NOT an Egosoft employee.

kohlrak
Posts: 52
Joined: Thu, 28. Dec 17, 12:47

Post by kohlrak » Tue, 9. Jan 18, 02:18

Stars_InTheirEyes wrote:I was on a coding course (Processing) for a bit and felt stupid and hated it and left.

I did a couple of the test questions and got all 'M2' answers. I see in the sample mark-sheet a student who got M2 in everything passed, while another who did M2 for everything except question q8 got a distinction. I don't see why q8 wouldn't be 3-5-3 and why the distinction student got 3-5-7.
I'm not sure what link you followed to get to that point, and since there's so many variations of the test... Provide a more direct link?
mrbadger wrote:Not every course teaches programming in the way that suits every student.

I struggle to meet the needs of even my good students. A simple tick box what you got right and wrong approach rarely works.

Oh, it works for some things, but not for the broad question 'have you learned how to code'.

For that you need to Viva the student, discuss their progress, get a handle on how much they've understood the language, typically using some code they've written to talk through.
Well, that's actually the best way i've seen, given that programming is an art. It's a STEM field, but it's very much an art (as is mathematics). There is some empirical knowledge to it, though, so you can write tests to make sure they have all the tools down, but, at the end of the day, you can't be like some teachers an do a diff on the file and the percentage difference is the change of your grade. Fortunately, idiots like that are rare.
Morkonan wrote:
kohlrak wrote:...See, this is what i've been trying to do for a long time. I've come up with many, many different approaches to trying to teach programming. I feel that basic programming should be necessary for using the computer. I don't mean everyone should be able to code their own assembler or something, but you should be able to take advantage of scripts and such to do those really mundane tasks of generating the numbers that you need to copy and paste or something like that. People should not be afraid of command line tools, as there's nothing particularly difficult or strange about them, other than they're not a gui that everyone's used to....
Why should a user ever have to see a command-line? If it has a GUI, is it no longer a script? No longer "programming?" What is the difference between typing a command and pressing a button?

Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)

I agree that people need to have better, general, computer knowledge. They should have a basic understanding of how a computer "works." Computers, themselves, however, should be powerful tools that can be used to accomplish desired tasks... safely, with as little risk of error as possible, even for novice users. Tools that are effective, easy to understand and easy to use get used. Or, you get someone who doesn't know what a torque wrench is and just decides to tighten every bolt down as far as it will go...

This is the false divide that was created between Apple and IBM platforms. The idea that a computer should be "user friendly" launched a multi-billion-dollar company and revolutionized the personal computer space. Arguably, the competition to present a user friendly environment coupled with a powerful tool drove the entire personal computer industry to where it is, today. Combining that philosophy with "cellphone" gave birth to yet another industry.

Yes, a normal user should have a basic operating knowledge of "personal computers," no matter the specific platform. This is good. This will help them. This will enable them to do powerful things, safely and efficiently.

But, there's no reason at all why a user should have to know how to code. There's little reason why a user should know how to run a script, regardless of language, or go beyond the alter of the GUI. If that is required for some reason, then the designers have failed in their task of providing a good tool.

Power users, advanced users, those initiated in the mysteries of Computer? They shouldn't be locked out, either. But, there should still be protections for those that think they know more than they do, just so they don't brick their own boxes.
Because alot of programs loose functionality when placed into a GUI. Alot of programs can be better chained together when you don't have to take output from one program and copy and paste it into another. The simplification of computers provides a good entry point, like a "hello world," if you will. I've actually taken the time in trying to simplify the hello world, because it really is way too complex in most languages to not scare people away. "You have to do all that just to put a message on the screen? Hell, what's next? An essay just to ask someone what their name is?"
Chips wrote:
Morkonan wrote: Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)
Erm, you realise programming languages and writing programs is a huge abstraction from machine code?
Actually, it's really not. This is an illusion that certain people want you to believe for various reasons. For most people, the reason seems to be that they don't want to loose face. Machine code programming is one of those things that's really not as hardcore as it's made out to be, but everyone's still afraid to learn it. Assembly is a reasonable interface, but it can be done with a hex editor instead. No reason to do it without an assembler, though, as assembly is the best of both worlds. IMO, assembly is easier to learn than any High Level Language like C, despite those languages made with the intent of making it easier.
mrbadger wrote:Whether or not a user should understand about the terminal is dependent on their end goal.

If that goal involves Linux, or Python programming, then the answer is yes. If not then likely no.
Even in the case of just Python, terminal usage would be minimal.

My students are mostly in the category of needing to know it, so I make it available to them. But if they decide not to do it then they can avoid it.

In doing so they put themselves in the 'cannot get >65%' group. But that's because my modules all require advanced programming that in turn requires use of the Linux terminal.

So yes, not everyone does need it, but if you don't want to learn it, don't enroll on an advanced programming module, or at least not one I teach :D

I understand that advanced Wndows programming doesn't go near a terminal, but I don't know, I haven't written a Windows program for over a decade now, if you count pure GUI coding make that 14 years.
You let programming students avoid command line programs?
Chips wrote:If the bit about console is related to a programming course, then it is fundamentally necessary.

I may write the code via an IDE, but everything else is command line (build/deploy of code, configuring servers, starting and stopping services etc).

If you aren't capable of compiling or building at the command line, you're unlikely to get very far. The more familiarity you have (with working from a command line), the better prepared you'll be (not talking about just related to programming, but access/running services etc).
And it's important for building your own setup within another, such as your own OS or maybe Thereshallbewings.
Morkonan wrote: I agree, wholeheartedly. But, what is the purpose of "computer?" Why does a user have one? The user should have a basic understanding of how their computer works and they should, ideally, understand how to accomplish the desired, and suitable, tasks with it. Ideally, those tasks should be designed to be easy to accomplish, the tools easy to use, and nothing those standard, mundane, tasks require should, by necessity, go beyond the "user environment."

I'm not in favor of restraining use. I'm simply pointing out that a computer is a tool and as its design becomes better, so will its overall capabilities for use. Valuable, productive, and efficient users are possible without those users being required to do more than operate within the user environment. They don't need to know how to "code." A basic understanding of most things "computer" will be helpful, but nothing beyond that is necessary in a well-designed user environment.
That's the fundemental question that too many people answer differently. The computer is a calculator, which can also make things happen in the real world. Coding is fundemental to it's usage. The fact that people are so stuck on getting information from people through web-pages and processing that information, or organizing their files for use of some mp3 players, or any number of other mundane tasks, we see too many users spending too many hours doing things that would be easy if they just took 5 minutes to code a script to do it for them.
Chips wrote:I would ask whether you believe in education, but the answer is undoubtedly going to be too long to hold my interest - given we're on a forum on the internet. Life is too short.

So computer is just a tool, fine.
It really is just a tool. A very, very expensive tool.
mrbadger wrote:
Chips wrote:If the bit about console is related to a programming course, then it is fundamentally necessary.
I agree, but how? There are many ways to use the terminal. I teach the use of Linux standard CLI tools, and Git, Mercurial, SSH and the like.

Or how to activate shared libraries for a session, like OpenMP, or OpenMPI, since I'm buggered if I'll give them sudo access, and I doubt they'd always get it in their jobs, so it's a useful skill.

But then there's server admin terminal stuff, of which I only know Linux stuff, not Windows, and Windows is probably important. I have neither the skill, time, or equipment to teach them the Windows stuff. Powershell matters, but not in my classes.

My point is, there are many ways to use the terminal, so which do you teach?

I tend to scare students with my 'simple' CLI worksheets. Mostly because even the good students tend to have no idea just how much you can do with the terminal.

The bad ones who think they can leave them till the last minute just freak out and fail.
Well, many of the tools come with man pages. You can easily get away with teaching them that there are manuals, and that they can read them, since some of these tools sometimes get replaced. Do you give a man a fish, or do you teach him to fish?
Nanook wrote:
Chips wrote:I would ask whether you believe in education....
So computer is just a tool, fine.
Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? Their education lies in a different direction. It doesn't mean they're less educated. They can successfully make use of computers as tools to do their jobs without knowing any coding at all. For that matter, what use is coding to the average home computer user? They use browsers, email, home office software and perhaps do some gaming. To say that all computer users should learn how to code is just silly and to imply that they're less educated is a bit arrogant, IMO.
Mechanic is a special case, anymore, so I won't go into that. An artist, lawyer, and architect are also regular users. Regular users, alone, have so many uses for coding, should they ever apply themselves. I haven't been coding any real projects in years (aside from an assembler that i've been doing on and off), yet I seem to be writing code at least once a month, even sometimes once a week. Whether this is to backup my game installers ('cause i buy from gog since i believe in user rights), encrypt dirty file zips, a program to clean the XML formatting out of a script for a particular space game, i have a reason to code and can do so in a way that makes my life easier than if i was to try to do things without coding.

User avatar
mrbadger
Posts: 5650
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Tue, 9. Jan 18, 09:02

kohlrak wrote:
You let programming students avoid command line programs?
Any student who has made it to the final year and still managed to have so little talent with programming that the terminal is a serious challenge is not a student I can fix in a semester. in all honesty they are someone who will likely never be a coder after graduating.

They have other issues, such not really wanting to be coders in the first place and only being on my module because it has no exam. Why that would be appealing I don't get, to me it would scream hard as f$%k avoid, but I from what I tend to see they just try to blag any form of pass.

I get kids like that year after year, which is why I have a route through for them. That way they don't take up all my time.

They can have their reduced grade pass and be happy with it, and I don't get emails from morons demanding a first because it was really hard for them.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 1907
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Tue, 9. Jan 18, 09:04

Chips wrote:I would ask whether you believe in education,
I absolutely do and I also enjoy learning new things.
but the answer is undoubtedly going to be too long to hold my interest
68 65 72 65 27 73 20 73 6f 6d 65 74 68 69 6e 67 20 73 68 69 6e 79 20 66 6f 72 20 79 6f 75 20 74 6f 20 70 6c 61 79 20 77 69 74 68 20 77 68 69 6c 65 20 74 68 65 20 61 64 75 6c 74 73 20 74 61 6c 6b
So computer is just a tool, fine.
Yes. That is what a computer is.
kholrak wrote:Because alot of programs loose functionality when placed into a GUI.
Then they're not optimized for an end-user using a GUI, right? Then, that means, they're not the sort of programs you'd want with a GUI. Probably not for most of the uninitiated...
Alot of programs can be better chained together when you don't have to take output from one program and copy and paste it into another.
Well, if I have a "suite" of programs, designed to work with each other, even though they each specialize in different things, or are better in certain appapplications, then I may not have to copy and paste. I just add the appropriate field to my Word doc and it'll lookup the value for me, no problem. It'll even update it when it changes! Except after I print it... That causes it to break the program an' it won't updated it nomores.. /idiotuserbugreport :)
... I've actually taken the time in trying to simplify the hello world, because it really is way too complex in most languages to not scare people away. "You have to do all that just to put a message on the screen? Hell, what's next? An essay just to ask someone what their name is?"
I am uber coder. Write uber code. Most famoustest of codes is "Hello World." Can do better than prn scrn an' echo!

Hello World

Tada!

/serious

A coder, somewhere, wen to a great deal of trouble so that I could type on a keyboard and pixels would light up in the shape of the letters that I typed. The above is the "user" example of "Hello World." I didn't have to type more than the number of letters in those words, no matter what was going on in the "back end." And, arguably, I can do much more with the tools the coder gave me than any regular codemonkey given the same amount of time. I can make it in italics, bold, underline, put it in a list, quote it, put it in a codebox, insert it into an url description, change the colors of the letters... ALL of those things in a matter of seconds. Gime some <blink> and we'll have a field-day!

I don't need to know how to write the short, brief, easy, code to make the screen print out "Hello World." I'm doing it right now and, moreover, I can go "beyond" that with how I use the power the coders gave me. I can use this new tool for things other than "computer" and other than "computer stuffs."

Sure, learning things is great and people should, if they can, know more about the tools they use. A professional, who uses tools in their profession, often knows a great deal about them. But, they don't need to know how to create those tools in order to use them with a great deal of skill, nor should they be required to.

User avatar
mrbadger
Posts: 5650
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Tue, 9. Jan 18, 18:48

Nanook wrote:Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? .
They should not. But you've hit the main point, a software developer, or at least as good one, needs to be capable of becoming a toolmaker for any one of those professionals.

Further, those tools need to be easy to use and maintain.

At the start of any developers career they need a decent understanding of the basic tools of their craft.

It may be that they won't use those tools much, but they should be able to use them. If you don't then you have gaps that will turn up and bite you.

Then as they specialise, as you must, you hone the skills beneficial to your field.

Is there a field that never involves the terminal? I'm not aware of one, but it might exist. But there are fields that contains skills irrelevant to others.

I for instance know nothing about OpenGL other than the very basic stuff needed for my personal projects. Simple shapes, projections, translation, things like that.

And nothing at all about .NET stuff.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Chips
Posts: 824
Joined: Fri, 19. Mar 04, 20:46
x3tc

Post by Chips » Tue, 9. Jan 18, 20:30

Nanook wrote: Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? Their education lies in a different direction. It doesn't mean they're less educated. They can successfully make use of computers as tools to do their jobs without knowing any coding at all. For that matter, what use is coding to the average home computer user? They use browsers, email, home office software and perhaps do some gaming. To say that all computer users should learn how to code is just silly and to imply that they're less educated is a bit arrogant, IMO.
Why should we learn a foreign language(s) at school? Why should we learn History, why Geography, why Science if you have no desire to forge ahead in those career paths?

So, should we teach the bare minimum based upon people's personal desires for their future career paths? That is what you're stating at the moment... "You want to be a hairdresser? No need for history, geography, french, english or anything beyond 7year old maths - but a bit of chemistry may help".

And how on earth would anyone know whether they'd enjoy programming or desire a career in computers?
It really is just a tool. A very, very expensive too
It really isn't expensive. A few quid. Chip and Raspberry Pi Zero ($9 and $5 respectively).
https://www.pcworld.com/article/2911098 ... tml#slide3

As for why I take assumed umbridge at the label of tool... it is correct in a way. It's just a "thing". But that thing is ubiquitous in modern life. It's everywhere, in everything, doing things people cannot do. Laser correction surgery on your corneas? Impossible without computers. Washing machine? Has a computer in it. Nearly every single thing in modern life is reliant upon a computer. Do you need to learn how to program them to live? no. But you also don't need to learn Math, speak French or be educated about a religion either. I'm not on about "everyone should be able to program to a professional level", but an introduction, an awareness, an understanding - as per most subjects taught within schools.

Also, programming isn't about writing code... it's about solving problems. Through writing code :D There be "transferable skills" and logical thinking in that. Think that was kind of the original topic, no? Useful skills way beyond "programming" - and God knows these are skills people seem to lack.

Actually, it's really not. This is an illusion that certain people want you to believe for various reasons. For most people, the reason seems to be that they don't want to loose face. Machine code programming is one of those things that's really not as hardcore as it's made out to be, but everyone's still afraid to learn it. Assembly is a reasonable interface, but it can be done with a hex editor instead. No reason to do it without an assembler, though, as assembly is the best of both worlds. IMO, assembly is easier to learn than any High Level Language like C, despite those languages made with the intent of making it easier.
I cannot disagree with you more. Programs in high level languages are, essentially, in natural "English". Also, assembly != machine code. Look up a hello world example in both, massive difference in readability and understanding. Baffled by the claim to the counter, unless it's a "I'm really awesome" type posting?

User avatar
mrbadger
Posts: 5650
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Tue, 9. Jan 18, 21:39

I quite enjoy programming in assembler.

That said I wouldn't use it for anything but small functions whose operations I want to control such that they are as fast as I can make them.

even then, if the function is a complex one I tend not to write the thing in assembler. I write it in C, compile it into assembler and hand optimise that.

However there is some debate as to whether it's still worth doing that, compilers are getting pretty good at optimising.

So it's down to fun for weirdos like me, and only really necessary for Console platform developers who need to speed up games when the hardware hasn't changed.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 1907
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Tue, 9. Jan 18, 22:25

mrbadger wrote:
Nanook wrote:Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? .
They should not. But you've hit the main point, a software developer, or at least as good one, needs to be capable of becoming a toolmaker for any one of those professionals.

Further, those tools need to be easy to use and maintain.

At the start of any developers career they need a decent understanding of the basic tools of their craft.
...
That's the essence of a "professional." Specialists may not need extensive knowledge outside of their particular field - That's why there are other "specialists." Still, they need to know enough about the things that are intimately associated with their profession in order to do "a good job."

Coders should be "professionals." Many are. And, does the mechanical engineer using Matlab to design a new joint need to know how to code "computer?" No. But, they may need to have extensive knowledge of Matlab, since that is the tool they are using.

kohlrak
Posts: 52
Joined: Thu, 28. Dec 17, 12:47

Post by kohlrak » Wed, 10. Jan 18, 12:25

mrbadger wrote:
kohlrak wrote:
You let programming students avoid command line programs?
Any student who has made it to the final year and still managed to have so little talent with programming that the terminal is a serious challenge is not a student I can fix in a semester. in all honesty they are someone who will likely never be a coder after graduating.

They have other issues, such not really wanting to be coders in the first place and only being on my module because it has no exam. Why that would be appealing I don't get, to me it would scream hard as f$%k avoid, but I from what I tend to see they just try to blag any form of pass.

I get kids like that year after year, which is why I have a route through for them. That way they don't take up all my time.

They can have their reduced grade pass and be happy with it, and I don't get emails from morons demanding a first because it was really hard for them.
This is terrifying, and this is precisely why employers are looking for tests.
Morkonan wrote:
kholrak wrote:Because alot of programs loose functionality when placed into a GUI.
Then they're not optimized for an end-user using a GUI, right? Then, that means, they're not the sort of programs you'd want with a GUI. Probably not for most of the uninitiated...
These programs should be, though. The large amounts of "gui-wrapper" programs that exist, including ones that are out of sync with their command line tools, says enough. While not all the features of SSH are for everyone, it's pretty useful for people who want file sharing without all the insecurities that come from SAMBA, or trying to struggle with something like skype. And the ability to forward x-server is pretty useful for certain types of work environments, too (nursing homes, hospitals, etc, which aren't using the technology [even using less secure technology] because they're not even aware it even exists, let alone how to use it). I saw someone here on the forums using GIT in a really old post for managing their saves or something. Do you know how many people could benefit from GIT for school reports, for example? That should be a standard tool for everyone, and is more useful than microsoft word which actually comes pre-installed. Businesses alone could benefit from the ability to backup spreadsheets and stuff. And that's just the tip of the iceburg. Making a GUI for these kinds of tools should be an absolute slap in the face to anyone who would use them.
Alot of programs can be better chained together when you don't have to take output from one program and copy and paste it into another.
Well, if I have a "suite" of programs, designed to work with each other, even though they each specialize in different things, or are better in certain appapplications, then I may not have to copy and paste. I just add the appropriate field to my Word doc and it'll lookup the value for me, no problem. It'll even update it when it changes! Except after I print it... That causes it to break the program an' it won't updated it nomores.. /idiotuserbugreport :)

What if they're not designed to work together, but simply do? Here we go back to "grep" again. I'll take a very specific, quick example. I have this 100KB file full of documentation on the accent patterns of 大阪弁, as well as an index to a file with a native person from 大阪府 saying those words. It is a simplified database that I came up with on the fly (probably could've moved it into a database, but let's assume for a second that i'm not that computer smart). Easily takes a few minutes to open up in any given GUI program. If I'm tapped for time, or just don't feel like waiting those 5 minutes to make sure I got the correct accent pattern for the word (since there's no point in storing it for every card in Anki), I can just open a terminal (takes less than 5 seconds) and type in a quick command, and then get this output.
[kohlrak@kohlrak-server ~]$ fjw 暗記 #Find Japanese Word
暗記-H*0
There, I managed to look up the word 暗記, and realized that I have a natural tendancy to incorrectly pronounce it with the HHH pattern when it's pronounced with the LLM pattern. Some times i won't need it. Sometimes i need it for 3 or 4 words. I made that small script because I got sick of turning a 5 minute task into a 30 minute task. This is something someone who's studying Japanese would likely do if they're worried about having the correct pronunciation of words.

Code: Select all

function towav {
        ffmpeg -i "$1" "$1.wav"
}

function tomp3 {
        ffmpeg -i "$1" -acodec libmp3lame "$1.mp3"
}

function toogg {
        ffmpeg -i "$1" -acodec libvorbis "$1.ogg"
}
Sure beats waiting 5 minutes for another GUI program with a splash screen to load. Better yet, I could easily convert these to convert entire directories. A similar practical situation I had, was I bought the entire series of a radio show. The first 100 disks were audio disks (松本人志の放送室), while the remaining were MP3 data disks. I wanted to coherently put the entire thing on a USB drive, and stick it into a cheap 15 dollar MP3 player, and know what track number corresponded to what episodes, without having to cross reference a printed sheet (actually, multiple sheets) of paper that said what track was part of what episode. Basically, the solution was to take the first 100 episodes and merge the tracks into a single MP3 file. Lemme know when you find a GUI that can solve these kinds of problems, because unique and special problems are regular occurence for people, and then they either have to make due with some ridiculous solution or settle for not having what they want.
... I've actually taken the time in trying to simplify the hello world, because it really is way too complex in most languages to not scare people away. "You have to do all that just to put a message on the screen? Hell, what's next? An essay just to ask someone what their name is?"
I am uber coder. Write uber code. Most famoustest of codes is "Hello World." Can do better than prn scrn an' echo!

Hello World

Tada!

/serious
Ah, but say you're trying to learn a language like Java or C++. Now you have to explain #include, int, main, the empty parenthesis (and why it's absolutely necessary, without them thinking suddenly that now they are doing something with absolutely no purpose), then why we have {}s, followed by why we have to use either "std::", "using namespace std;" or "system.out.println" or any other combination. Finally, you have to explain why we have to return 0, which has to do with command line, which most students aren't even aware of. What often results is "we have boiler plate code, we have to do things this way, so trust me, don't think for yourself on this, but i'm gonna demand you think for yourself later." See the challenge, now? It's no surprise that programming confuses people. Basic's pretty impractical anymore. Surprise, though, as visual studio and visual basic mixed together made it so that you could design a GUI and trust that when you double clicked the button, that the code the compiler added was totally relevant. Even if you didn't understand it and come to the conclusion everything's magical (hence why so many VB only coders have trouble making a program that doesn't crash), at least the core of the lesson isn't a contradiction. It's no surprise why so many people freeze when you tell them that maybe they could code without visual studio's "new project" commands.

Now, if you can get them coding (with a real, currently living and breathing programming langauge, that can make a program that doesn't need an interpreter or something) with minimal or no boiler plate code, you can be consistent. For the educators out there, i have a few working examples that are improvements, but you won't like them, and they don't completely solve the problem. But there's the rub, the langauges that can pull this off are usually languages that need interpreters, and are more or less toys or scripting engines, and can't do everything people want or need them to do, so then they ask why they're learning something useless.
A coder, somewhere, wen to a great deal of trouble so that I could type on a keyboard and pixels would light up in the shape of the letters that I typed. The above is the "user" example of "Hello World." I didn't have to type more than the number of letters in those words, no matter what was going on in the "back end." And, arguably, I can do much more with the tools the coder gave me than any regular codemonkey given the same amount of time. I can make it in italics, bold, underline, put it in a list, quote it, put it in a codebox, insert it into an url description, change the colors of the letters... ALL of those things in a matter of seconds. Gime some <blink> and we'll have a field-day!
There's the separation. You have the coding necessary for the common person (who knows none at all), and you got the coding for the programmer who wants to do it all (who ends up learning one of those languages designed for the common person). Sure, there's people who actually do learn and learn real programming languages, but we baby and nanny the students so much that too many just don't learn. Then you have employers who are like "we can't find talent, even among those with degrees! What do we do!? We need a way to test to make sure we're not wasting our time and money!" Yeah, that's precisely where we're at.
I don't need to know how to write the short, brief, easy, code to make the screen print out "Hello World." I'm doing it right now and, moreover, I can go "beyond" that with how I use the power the coders gave me. I can use this new tool for things other than "computer" and other than "computer stuffs."
Cool. Need a golden star?
Sure, learning things is great and people should, if they can, know more about the tools they use. A professional, who uses tools in their profession, often knows a great deal about them. But, they don't need to know how to create those tools in order to use them with a great deal of skill, nor should they be required to.
So, in the real world, the tools break and they don't know how to fix them. They have to wait for "maintenance" to come and do something as simple as rebooting half the time. My personal favorite is when they outsource the tech support so a guy drives from another state (in the US) or another country (in europe) just to solve a problem where items in the menu are no longer in alphabetical order because they clicked the header of one of the columns. And if you think something like that is rare, well...
Chips wrote:I cannot disagree with you more. Programs in high level languages are, essentially, in natural "English". Also, assembly != machine code. Look up a hello world example in both, massive difference in readability and understanding. Baffled by the claim to the counter, unless it's a "I'm really awesome" type posting?
Taken from an examples file from Flat Assembler:

Code: Select all

; example of simplified Windows programming using complex macro features

include 'win32ax.inc' ; you can simply switch between win32ax, win32wx, win64ax and win64wx here

.code

  start:
	invoke	MessageBox,HWND_DESKTOP,"Hi! I'm the example program!",invoke GetCommandLine,MB_OK
	invoke	ExitProcess,0

.end start
And, yes, with a simple include file, it can be made even simpler, as it uses a MessageBox with an OK button instead of, say, printf.
mrbadger wrote:I quite enjoy programming in assembler.

That said I wouldn't use it for anything but small functions whose operations I want to control such that they are as fast as I can make them.

even then, if the function is a complex one I tend not to write the thing in assembler. I write it in C, compile it into assembler and hand optimise that.

However there is some debate as to whether it's still worth doing that, compilers are getting pretty good at optimising.

So it's down to fun for weirdos like me, and only really necessary for Console platform developers who need to speed up games when the hardware hasn't changed.
I'll give you the optimization argument. 5 or 10 years ago, I would've said differently, but the last time i looked at the optimized output, it's come far. I've seen compilers come up with the dardest outputs. I've heard of visual studio using jump tables or something for switch statements, and i've personally seen GCC read a variable from memory and a few lines later writing the same variable back to the exact same address, without any modifications (that's how it handled memory allocation for functions).
Morkonan wrote:
mrbadger wrote:
Nanook wrote:Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? .
They should not. But you've hit the main point, a software developer, or at least as good one, needs to be capable of becoming a toolmaker for any one of those professionals.

Further, those tools need to be easy to use and maintain.

At the start of any developers career they need a decent understanding of the basic tools of their craft.
...
That's the essence of a "professional." Specialists may not need extensive knowledge outside of their particular field - That's why there are other "specialists." Still, they need to know enough about the things that are intimately associated with their profession in order to do "a good job."

Coders should be "professionals." Many are. And, does the mechanical engineer using Matlab to design a new joint need to know how to code "computer?" No. But, they may need to have extensive knowledge of Matlab, since that is the tool they are using.
What i want to know is why a particular professional can't generate a simple script on their own without paying a programmer to do it for them. Why are we still hiring people to make static web pages?

korio
Moderator (Español)
Moderator (Español)
Posts: 648
Joined: Sat, 29. Sep 07, 18:25
x4

Post by korio » Wed, 10. Jan 18, 13:59

IMO everyone in "modern" days should have a "minimun" knowledge of programing.


Despite i work on "IT" im a programmer (atleast that's what i studied) and its always the same, someone asks me to do some "easy" program i tell them how much time it will take and then the "but why so much time, its an easy thing" starts.

Making a little program or script to do something you need is easy, making anything for users to use....

Also, we have a little joke when i was learning programing, "if you learn VB, its like to brainwash yourself and forget everything you have learned so far of programing" and up to some point its true hahah

User avatar
mrbadger
Posts: 5650
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Wed, 10. Jan 18, 19:43

Ah Grep.

Last year I had a student who seemed to think grep was some sort of wizardry. It took them five weeks to understand and complete this task:

Create empty file cli/fstab.txt without using a text editor

Concatenate /etc/fstab to cli/fstab.txt

Display this file in the terminal

Search for the word ’reference’ in fstab.txt

Redirect the output you see to the file cli/out.txt and print this to the terminal.

Not hard right? Certainly not hard for a final year computer scientist, but the student in question thought I was asking them to do something far beyond undergraduate skill level...

All the commands to use, and the way to use them, was listed in the worksheet, which was designed to introduce students to lots of CLI tools.

They needed it explained to them so many times I started to think they were coming to the class stoned.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 1907
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Wed, 10. Jan 18, 20:18

kohlrak wrote:...What i want to know is why a particular professional can't generate a simple script on their own without paying a programmer to do it for them. Why are we still hiring people to make static web pages?
It's not their job.

A friend of mine is a coder, by degree and background. But, as he's moved up the ranks into upper-management, he's not a coder any more. He loves writing code, but it's just not what he's paid to do. So, he's gotten a bit rusty, here and there. Not sloppy, just a little rusty in certain things he'd rather not be rusty in. So, he'll write some code in his free time, just to sharpen up his skills. He may even weigh in, from time to time, on something being written and show the boys in the cubes how to do it.

Sometimes, he'll tell me about seeing crappy code or something just not done the way he'd have done it. He made his chops, been there, done that, been in the trenches and had the bad habits beaten out of him, so he knows what the entry and middle level mistakes are.

"Does it work? Good. I'm not going to sift through this rat's nest unless the problems are egregious, I have more important crap to do." - My friend.

He could. If he needs to know something about a language or just learn a new one, he'll handle it in short order, then be able to tell the new guy what he's doing wrong... IF he bothered at that level. But, it's just not his job anymore. And, if he wasted his time writing html, no matter how good it would be, it'd be wasted time. (He still misses it, though. He's often said he'd probably be happier writing code instead of being not-writing-code in upper management.)

My perspective here is just as a user with a desired goal to reach in using a tool. If I don't "need" to create my tool, I don't need to know how to do it. I need to understand how my tool works and a few basic things about it, but that's as far as I need to go in order to get the job done.

Most professions are like that.

But, in "learning" a profession, one often starts at the basics, even if those basics aren't ever used anymore. So, I certainly understand the benefits a coder would gain if they learned what their tools were actually based upon. Learning assembly, for instance. I can see the benefit, there. But, will they need a working knowledge of that in twenty years? Probably not. Is it likely they'll ever have to actually apply that knowledge to writing code in twenty years? Probably not.

Here's a question: How long do programmers actually stay in the position of "programmer" before moving into a specialized area or even into a different field, possibly not even related?

Sure, there are fifty year-old programmers cranking out stuff, but what's the percentage of beginning software engineers/programmers/coders that actually stay in that job description for their entire working life? From those I have known, it seems as if that's just a low-level port-of-entry onto a ladder of career opportunities in software/IT.

Post Reply

Return to “Off Topic English”