We're building the all-in-one platform for coding education, born from our own frustration as TAs. At CodeGrade, students learn, code (optionally in a browser-based editor with full Jupyter support), and get feedback in one place. We're a small, bootstrapped, profitable, and distributed team looking for a full-stack engineer to help us own and build features end-to-end.
You'll be working with a high-impact team on interesting challenges in a product used by thousands of students globally.
Honestly I agree that structural diffs don't solve a problem for me either. I care about formatting too much to only want to rely on them.
I was just replying that if you want to not get a diff for your example to which I replied you have to use a more advanced representation of the code, and AST won't be able to do it.
What you want to determine this is not an AST, you want a Program Dependence Graph (PDG), which does encode this information. Creating them is not close to as simple as creating a AST, and for many languages requires either assumptions that will be broken, or result in something very similar to an AST (every node has a dependency on the previous node).
CodeGrade | Software Developer | Amsterdam, The Netherlands | Full Time | Onsite
CodeGrade is improving coding education, by giving teachers better tools so that they can provide more insightful feedback for their students. It all started as a university project at the University of Amsterdam to make our lives as TAs easier, and for students to get the feedback they need to be successful in computer science education. Today, we are helping many institutions worldwide.
Our tech stack includes python (including heavy use of type annotations), Vue and typescript, and we use AWS for our hosting.
We're a bootstrapped spinoff of the University of Amsterdam, and this is our first technical hire. In the role you'll be working on the entire product, from our custom autograding infrastructure to plagiarism detection.
Apply here [0], or email me directly (thomas at codegrade dot com).
CodeGrade | Software Developer | Amsterdam, The Netherlands | Full Time | Onsite
CodeGrade is improving coding education, by giving teachers better tools so that they can provide more insightful feedback for their students. It all started as a university project at the University of Amsterdam to make our lives as TAs easier, and for students to get the feedback they need to be successful in computer science education. Today, we are helping many institutions worldwide.
Our tech stack includes python (including heavy use of type annotations), vue and typescript, and we use AWS for our hosting.
We're a bootstrapped spinoff of the University of Amsterdam, and this is our first technical hire. In the role you'll be working on the entire product, from our custom autograding infrastructure to plagiarism detection.
Apply here [0], or email me directly (thomas at codegrade dot com).
We wouldn't except it if people got killed by selling them poisoned food, at least not where I'm from. Plane crashes are investigated and licenses are suspended and blacklists are kept, furthermore software is tested and verified before it is used in production. We shouldn't except excessive risks, see regulations with truck and bus drivers, just because a profit can be made.
Wat a completely terrible thing to say. This isn't about saving a life, this is about not killing somebody. Just because a company like Uber thinks it can make a lot of money doen't mean it can simply take risks like these.
Of course you need to drop to some sort of non GC language, or you would need a hardware GC. However look at Iota [0], that can compile LLVM to Common Lisp. So you can run GC and non GC languages within, kind of, Common Lisp. Or look at all the projects that compile a language to javascript, and there is no reason why the reverse could not be done.
I tested Common Lisp. SBCL seems to be exponential while Clozure CL is not.
However it should be noted that it is non portable to do globbing in Common Lisp, so I expect most users implement it using something CL-FAD or OSICAT and CL-PPCRE, and CL-PPCRE is efficient.