learn C and an architecture, then you can go back to the more abstract languages and all that cool CS stuff. If you want to do it at that point.
Slashdot videos: Now with more Slashdot!
In my experience this overconfidence as a result of politeness is true in my workplace, and in past workplaces as well.
Being generally polite, and not giving explicit negative feedback to annoying, unfunny, awkward, disrupting people finds justification in a kind of tacit, unconscious consent to be accepting and tolerant of everyone.
This works kinda all right, and makes it for a peaceful, sometimes even happy environment, and reduces the chances for conflict.
I have witnessed two scenarios where this politeness strategy fails utterly to both create a pleasant environment and to avoid conflict.
One scenario is that of a massively disrupting individual, who is not aware of the consequences of his words and actions.
Sometimes, like a current temporary colleague of mine, the guy is actually not a bad person at all, he is just not very perceptive of subtle signals (like awkward silences etc), looks very much emotionally vulnerable and unstable, which makes it undesirable to confront him about the issue, and has probably never been explicitly and seriously criticized for his disruptive behavior, resulting in a combination of fragility and overconfidence.
Responding to such an individual seems to cause problems whichever strategy is employed (honesty, politeness, etc).
The other scenario is that of a smart, socially-aware, perceptive, self-serving truly evil person.
These people analyze these social situations carefully and are able to detect these weaknesses in the social construct, and take advantage of them. They are therefore able to belittle, disrupt, take advantage of, subvert, out-compete their co-workers, because they know that if they are subtle enough, if they target their attacks carefully enough, nobody will directly accuse them of anything.
Note that I know that I myself have issues with detecting more subtle messages, and I know that my ego is vulnerable to lack of negative feedback as well. I try to ask people around me for truthful advice when in doubt, but in general I profit from this tolerant, polite social construct as well.
I am not sure about how to organize a better social construct that is both honest and peaceful and tolerant, and I am not sure it is possible to do it in a perfect way for all situations and for all compositions of individuals.
It seems to be a long standing problem with establishing and enforcing norms in societies.
For personal projects (involving just me):
if it is fixable immediately and simply, I fix immediately.
Otherwise it goes to pencil & paper, any leftovers at the end of the coding session go to TODO.txt.
I really like strongly typed, garbage-collected, secure languages that compile down to machine code. I've used the excellent and fast Algol 68 compiler long long ago on a CDC Cyber computers, and now I use Modula 3 on Linux, when I have a choice. They compile down to machine code for efficiency, and give access to the fine-grained control of data -- you can talk about bytes and integers and such just as in C, but they still manage to take care of safe memory allocation and freeing.
As a system programming language I chose C as my favorite tool for the job.
What would you say are the main advantages of choosing Modula 3 versus C as a system programming language?
I agree with your comments about strong typing catching more problems earlier, and thus if Modula 3 is able to express stronger typing than C, that seems to have its advantages (with some loss of versatility/flexibility perhaps?) Does this have for example drawbacks when trying to add generic programming elements? I find void * useful in that regard.
I have been always skeptical about garbage collection, after having first hand experience with Java.
Does Modula 3 give control / options about garbage collection and its memory management strategies?
C memory management may be a pain, but at the same time it gives me more or less what I want, when the need for dynamic allocation cannot be simply avoided, but still a somewhat predictable run-time behavior is desirable.
I studied the glibc implementation of malloc and friends, which I tend to prefer compared to different implementations of mallocs available by default on SunOS 5.8 and Solaris 10 and other Unices.
Could you give me/all some pointers to memory management under Modula 3?
I am asking about Modula 3 since you are pitching it as a system programming language, but if you think this also relates to Algol 68, I'd like to know as well.
They way I see it, Viewfinity's CEO not-so-subtly says that people should not have control over their computers, and offers SaaS so that Viewfinity can assert that control.
When you start to play, your browser opens up a WebSocket connection to one of several load-balanced game servers.
I guess they are all VIC-20s then, given how fast they got slashdotted.
> how do you make the transition from hacker (in the positive sense) to a real engineer?
I like your question. Start in a software engineering position,
try to do your best while still respecting yourself;
_engage the people around you_, find the people you resonate with.
Look calmly at your mistakes and at different perceptions and points of view, try to learn from them.
Try to keep a high spirit and a playful attitude.
Do not bash other people even when you feel you are right, learn to negotiate.
Sometimes it is better to at least discuss a non-optimal but still good solution,
rather than trying to force what you perceive as the optimal path, at the cost of burning all bridges around you.
Work relationships and the work environment need to be taken into account.
At the same time, reality cannot be ignored.
I would tell these things to the myself of some years ago. Whether that would help, I don't know.. we probably need to learn from personal experience in the end anyway. But maybe some road signs along the way pointing into some general direction can help at least a little bit.
Good luck, good journey.
Robots can monitor vital signs of interrogated suspects, as well as a human doctor can. They could also administer injections and even inflict pain in a more controlled way, free from malice and prejudices
This is a terrible (human) atrocity.
This is humans renouncing their humanity, by trying to get as far as possible from the victims of their actions through robots and drones, thous avoiding the moral responsibility. Horror.
Following this was C# (which I had expected to be number 1), at 153%. After this, PHP, Ruby and Python were basically fairly balanced at around 100%. The most 'under-represented' major language would definitely be C at 11%.
I am a C programmer and do not need help from this "stack overflow" web site.
My references are the C programming language standards and the single UNIX specification.
I am giving duckduckgo a try, they seem to be better at giving you the results for what you actually typed in.
They also say (who knows if that's true), that they do not track searches, and do not keep records.
I had it as the default search engine in firefox for about a week now, it seems to work fine.
A couple searches did not give me the result I was looking for, so I used the feedback link, and they got in touch with me very quickly, and they fixed the problem (as it turns out, there was a wrong link on wikipedia which they valued too much).
sh-3.1$ wget http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.4
--2011-10-06 12:41:23-- http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.4
Resolving www.kernel.org... 184.108.40.206
Connecting to www.kernel.org|220.127.116.11|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2011-10-06 12:41:23 ERROR 404: Not Found.
Does anybody have a link to a video recording of the full speech?
Moore's law is about transistors, and no, the 3 year old cpu is not "the samesame as today".
But the experienced performance gains now are much slower, and much more workload-dependent than back in the day.
And back in the day, more MhZ _was_ the (main) way to increase processor performance.
You could feel the incredible yet predictable pace at which that happened, and suddently you had to upgrade, since the 3 year old cpu could not keep up with newer software anymore. This is less the case today.
Yes, GEM was also included with my Amstrad PC-1512 here in Italy.
The PC also came with MS-DOS 3.20.
Both GEM and Windows were completely useless at the time, as there were no useful apps (=games and programming tools).
The Amstrad 1512 also had a special graphics mode, 640x200x16 colors that was not compatible with any of the graphic standards of the time [Hercules, TGA (Tandy), CGA, EGA]. That special graphics mode was supported only by GEM. But it was pointless, since there were no apps. GEM Paint was the only program I remember where I could use the 16 colors on screen that were advertised in the magazine-ads.
At the time, I looked up at the Amstrad 1640 as the "perfect" computer, with 640K RAM and an EGA adapter (this time, 16 colors on screen _for real!_).
Did Ken, Dennis, and Brian choose wrong with NUL-terminated text strings?
The author of TFA does not like that choice for the C system programming language.
But tries to demonstrate that it is an objectively "wrong" choice with weak and plain false arguments.
The hardware development cost argument is weak. The fastest CPUs around have a very rich instruction set. It maybe hacky and ugly but where is the evidence of a noticeable burden on CPU performance or cost due to the additional instructions to handle 0 in the input? And they are pretty handy instructions anyway.
The compiler argument is uninformed about how compilers work, and are permitted to work by the C standard. There is simply nothing there.
The gets(3) argument does not have anything to do with the NUL-terminated strings.
It has to do with the fact that gets is for most uses a broken API that should seldom if ever be used.
The FreeBSD libc bcopy/memcpy argument is plain false.
If the program is correct C, there is no "unwarranted page not present" fault.
One can do mistakes by mixing memcpy and C Strings if one is not careful, but it's exactly the same with any attempt to read past the end of an array.
If the confused author is trying to copy C Strings around, he can use the C String functions.
TFA speaks more about the ignorance of the author than the value of the NUL-terminated string choice for the C programming langugage, which can still be debated, but not on these grounds.