Proving code correct is orders of magnitude harder than the rest IMHO. It is amazing that enough progress has been made that large scale projects like CompCert and seL4 can now be done successfully by small teams of people.
Hard Things in Computer Science
21–30 of 46 posts
Re: Hard Things in Computer Science
#22Re: Hard Things in Computer Science
#23Computing with limited numerical precision (aka floating point) is 1.000000000000003534 additional hard thing to deal with.
Modern computers can calculate with a very large finite precision using decimal types. We have so much machine to waste today that if calculations of that sort are relevant, just throw more iron at it.
Moreover, many problems related to money) must compute with limited accuracy. For example, all intermediary results must be in 1/1000th of euros. You can use floats (yeah, I know, everybody say it's a no go) or fixed point, but in the end, you absolutely can't avoid thinking about rounding.
Re: Hard Things in Computer Science
#24Earlier quoted context omitted.
Agreed, and also just text in general, internationalization, line-breaks, horizontal vs vertical text, left-right vs right-left, etc, etc. OTOH that starts getting quite "application oriented" and where do you draw the line? compsci is perhaps more about computation and how to achieve it, analyze it, etc, and in that case even dates and times should not be in the list, being an "application" domain concern.
> where do you draw the line? How many clients do you have, or want to have? How many bugs do you want them to suffer? My language is written Right-to-Left. Jira couldn't care less about my market, so I don't use it, even though I could trivially add support myself in Firefox's User CSS file. But there are another 300 million people who speak RTL languages they are ignoring along with me. Is 300 million people a smal…
Of course your language has just as much right to be dealt with correctly in computers as every other, but that's probably a separate conversation about the right to equal access to technology whatever the economics (A cause I agree with), etc, etc.
Re: Hard Things in Computer Science
#25Re: Hard Things in Computer Science
#26Re: Hard Things in Computer Science
#27Earlier quoted context omitted.
> where do you draw the line? How many clients do you have, or want to have? How many bugs do you want them to suffer? My language is written Right-to-Left. Jira couldn't care less about my market, so I don't use it, even though I could trivially add support myself in Firefox's User CSS file. But there are another 300 million people who speak RTL languages they are ignoring along with me. Is 300 million people a smal…
I meant where do you draw the line as to what is "computer science", and what is domain and application-specific problem-solving? Of course your language has just as much right to be dealt with correctly in computers as every other, but that's probably a separate conversation about the right to equal access to technology whatever the economics (A cause I agree with), etc, etc.
> I meant where do you draw the line as to what is "computer science", and what is domain and application-specific problem-solving?
Oh, I see.I actually think that the line is clear. Solving a practical problem or bug? That's not computer science. Developing or improving a generally useful algorithm or technique, such as a sort function? That _is_ computer science.
Science is improving our understanding of how things work or can be made to work. Actually putting that knowledge to application is Engineering (or tinkering).
Re: Hard Things in Computer Science
#28I'm going to be the "actually" guy and say that, actually, you can formally verify some studff about programs written in traditional/mainstream languages, like C. Matter of fact, this is a pretty lively research area, with some tools like CBMC [0] and Infer [1] also getting significant adoption in the industry.
[0]: https://github.com/diffblue/cbmc
[1]: https://fbinfer.com/
Re: Hard Things in Computer Science
#29* Strings (think Unicode, collations, string sizes, etc)
* Numbers (think currencies, precision, explaining floats to people, etc)
* Dates (as mentioned in the post)
And it's funny that we start teaching programming with these concepts.
Re: Hard Things in Computer Science
#30The hardest things in CS are also the simplest things: * Strings (think Unicode, collations, string sizes, etc) * Numbers (think currencies, precision, explaining floats to people, etc) * Dates (as mentioned in the post) And it's funny that we start teaching programming with these concepts.
I think the same kind of thinking applies for all the simple things in each domain.