Reputation: 1640 Grandmaster
- Active Posts:
- 5,792 (2.68 per day)
- 03-August 09
- Profile Views:
- Last Active:
- Yesterday, 06:08 PM
- OS Preference:
- Favorite Browser:
- Favorite Processor:
- Favorite Gaming Platform:
- Your Car:
- Dream Kudos:
13 Jun 2015 - 01:47
11 Jun 2015 - 14:17
10 Jun 2015 - 05:00
06 Jun 2015 - 08:26
05 Jun 2015 - 13:01
30 Apr 2015 - 05:41
11 Apr 2015 - 19:50
10 Apr 2015 - 12:55
-- HARKSTER --
05 Apr 2015 - 08:42
11 Mar 2015 - 12:23
Posts I've Made
Posted 1 Jul 2015Speaking of mixing things up. I program in Scala regularly and during a semester I was doing a lot of work in Java. I used the same IDE setup for both. Mentally I think about the object types in the same way and so I often get things mixed up if I am writing imperative code. I also do a lot of work in Haskell. I don't get Scala and Haskell mixed up except on certain algebraic datatypes, namely Scala's Option and Haskell's Maybe (which do the same thing basically). In Scala the Option type has two subtypes, 'Some' and 'None'. Haskell's Maybe type has the 'Just' and 'Nothing' constructors. I constantly mix these names up.
Posted 30 Jun 2015On the general topic:
I claim math is not super helpful with regards to *programming* a typical application but is super helpful in regards to *computer science*
I work in a niche area and do things with mathematical logic. Most people don't do this but IMO it is the area that is the most fun. I'd say most research in computer science falls into one of 4 categories. Formal Methods/Programming Languages and related things, Machine learning AI and related topics, Cryptography/Cybersecurity and related topics, the vaguely named "theory" topics related to computation, complexity, and algorithms.
The formal methods and programming languages areas are riddled with mathematical logic and a lot of proofs. Numbers seldom come up but equational reasoning, set theory, and other formal mathematics come up all the time.
Machine learning and AI are riddled with all sorts of traditional classic math like numerical methods, calculus, probability and statistics; what people traditionally think of as math is the kind of math that is really important here.
Cryptography as has been mentioned is very number theoretic and algebra heavy (note as Mac said, I mean abstract algebra. most mathematicians just call it algebra however because context at that level makes it clear).
The "theory" topics have so much stuff in it but I can definitely say that mathematics plays a part. Big-Oh notation if understood properly is actually a set of functions from real numbers to real numbers and all sorts of calculus (limits) and math goes into thinking about it.
On category theory:
This gets used by people at the highest level of research for theory related topics. The big thing I have learned to do with it is categorical semantics where you can basically give a semantics based on category theory to sequent logics (I'm currently trying to wrap my head around monoidal categories providing semantics for linear logics). Category theory is a lot more general than that though. I'm slowly coming to the understanding that category theory lets you solve all the same problems that set theory does (if not more) but though a different lens. The key word here is "behavioral analysis". Set theory lets you describe "what do things look like and what structure do they have". Category theory lets you ask "how do things behave and interact with each other". It turns out each can in many sense subsume the other (category theory doesn't have a strict definition while set theory has many, ZFC being the most popular).
I'm gonna see if I can think up a category theory related challenge for my second challenge in the computer science fourms.
Also in regards to understanding category theory: I'm far from being able to say I understand it but definition wise I'm not sure it is actually too much more complicated than something like a ring. In fact universal algebra studies frameworks in which groups and rings and fields can exist. It turns out that it is possible to understand category theory though the lens of universal algebra. Category theory is a lot richer than any specific kind of algebraic structure however.
edit: by the way monoidal categories deal with monoids.
Posted 13 Jun 2015CS Resources
The biggest free source of quality information on computer science is My link. They have a huge data structures page that contains all sorts of goodies. I will often just google something I want and like magic wikipedia will have something for me.
Other great sources if you want to learn a topic in depth and not a specific data structure or algorithm are online courses.
Udacity is more tech oriented and less theory printed than the others. edx.org has an amazing quantum computation course that contains an accessible presentation of quantum computing that you wont find anywhere else. Most other information on the topic is quite a bit harder to get into and is mostly presented from the physics view rather than the computer science view. These places are great places to start getting into computer science. You can go though them at your own pace. For instance I like taking sprints where I go at them for 4 hours or so and then dropping the topics for a week to do something else then picking them back up.
Also take a look at our pinned threads.
Tips for writing proofs
Posted 11 Jun 2015This isn't what is happening here. It would be if there was a comma involved but there isn't, just spaces. Also while in this case the language feature you mentioned behaves the same in both versions, major versions of Lua contain radical differences. We are on Lua 5.3 now but a lot of people still use 5.1.4.
If we go to the grammar we can see that a block is just a series of statements. In this case an assignment statement and a function call statement
Posted 10 Jun 2015I realize this was sometime ago but I figured I'd answer this anyway.
1) is valid.
To proove "forall x, K(x, x)" we need to prove K for an arbitrary value call it 'a'. So if we can proove K(a, a) we can prove "forall x, K(x, x)"
We can prove K(a, a) by simply instantiating 'x' and 'y' both to the constant 'a'
2) I list undischarged assumptions to the left. I also have assumed that ∀X∀y∀z(K(x,y) and K(z,y)) => K(x,z) was intended to be ∀X∀y∀z (K(x,y) and K(y,z)) => K(x,z) (e.g. K is transitive)
to prove ∀X∀y K(x,y)=> -K(y,x) we must prove K(a,b)=> -K(b,a)
to prove K(a,b) => -K(b,a) we must assume K(a, c) and prove -K(b, a)
K(a,b); to prove -K(b, a) we can use proof by contradiction by assuming K(b, a) and deriving a contradiction
K(a, b), K(b, a); we can get K(a,b) and K(b,a)) => K(a,a) by transitivity of K
K(a, b), K(b, a), (K(a, b) and K(b, a)) => K(a, a); we can get K(a, b) and K(b, a) because we have we have both assumptions.
K(a, b) and K(b, a), (K(a, b) and K(b, a)) => K(a, a); we can get K(a, a) by modus ponens using our two assumptions (I discharge all other assumptions at this point simply because I don't need them)
K(a, a); we can get -K(a, a) by the anti reflexivity assumption (the first assumption)
K(a, a), -K(a, a); we derive can derive bottom from these contradictions
so 2) is valid as well
- Member Title:
- spelling expret
- 21 years old
- September 8, 1993
- Marion Ks
- making and playing video games, language design, IRC bots, C++ templates, learning new languages
- Forum Leader:
- C++, Assembly
- Full Name:
- Jake Ehrlich
- Years Programming:
- Programming Languages:
Experienced: C/C++, Lua
Ok: D, Java, Haskell, Python, x86 assembly
- Website URL:
I X Code X 1
Showing 50 random friends of 54 (View all)