Timeline for CODE REVIEW 2017 Challenge
Current License: CC BY-SA 3.0
46 events
| when toggle format | what | by | license | comment | |
|---|---|---|---|---|---|
| Sep 1, 2017 at 1:22 | vote | accept | Der Kommissar | ||
| Aug 21, 2017 at 9:50 | history | edited | PeilonrayzMod | CC BY-SA 3.0 |
Clarify you have to implement each point to score it. You can't rely on a third part to do it for you. But you can use the third party by default when using your language.
|
| Aug 17, 2017 at 22:57 | comment | added | Peilonrayz Mod |
@Zeta My requirements for a language is does it take a string / file as input, and output what the language spec says it should. To score points however you have to, within reason, implement it yourself. So eval(input()) in Python / JavaScript will score you no points.
|
|
| Aug 17, 2017 at 19:49 | comment | added | Zeta |
Do eDSL languages count? For example, if I embed a Toy language in Haskell, does this still count as my "own" language?
|
|
| Aug 8, 2017 at 2:10 | comment | added | Justin | @Peilonrayz You're talking about LLVM, right? I'm actually in favor if giving the point. I guess you could require that the implementation actually implements the tail recursion but doesn't necessarily need to use that (reinvent the wheel, but use the already designed wheel). | |
| Aug 8, 2017 at 1:13 | comment | added | Peilonrayz Mod |
@Justin I'm in favour for not giving the point. Whilst it is likely to promote bad code, if you don't implement it then I don't think you should be rewarded the point. Just for the same reason I wouldn't give someone that wrote input as their program in Python 2 any points.
|
|
| Aug 7, 2017 at 19:26 | comment | added | Justin | For scoring, there's a few things to consider. For example, what if someone used LLVM? "Implement the tail call optimization for recursive functions" would be free then. | |
| Aug 7, 2017 at 19:22 | comment | added | Justin |
For "Implement Operator Precendence", what about languages where there is no precedence? For example, Clojure has none (IIRC); it's all "prefix", because everything is a function: x * y + z would be written as (+ z (* x y))
|
|
| Jul 1, 2017 at 12:36 | comment | added | Peilonrayz Mod | As for your second comment CAD97, I think it's best to ask @EthanBierlein. But I think the answer would be transpiling would not score the point as C++ is a language, not an intermediate language like Java bytecode. | |
| Jul 1, 2017 at 12:32 | comment | added | Peilonrayz Mod | @CAD97 Using the TIOBE Index for June 2017 of all the top 20 languages only Delphi, R, MATLAB and Scratch didn't have bitwise operators. No Bitwise operators are not bad abstraction. Yes they have their uses, take the C# FlagsAttribute Class. Also if you need to do low level stuff, even in a high level language, bitwise operators help simplify things. | |
| Jul 1, 2017 at 1:05 | comment | added | CAD97 | Clarification: the two times you mention intermediate language is the difference between <transpile to C++ which is then compiled> and <compile to instructions for a custom VM>? | |
| Jul 1, 2017 at 1:01 | comment | added | CAD97 | Just a little thing: should binary operators on numbers be a "standard operation"? In a high level language, exposing bit-twiddling feels like an implementation leak, as it is directly consequent on the two's compliment representation of integers. If you want to give points for bit-twiddling operations, score them separately from the arithmetic. (I have yet to encounter a problem where bit-twiddling was the best and clearest way of solving a problem, instead of an optimization.) | |
| Jun 22, 2017 at 22:11 | history | edited | Ethan Bierlein | CC BY-SA 3.0 |
Added in operators.
|
| Jun 21, 2017 at 23:25 | comment | added | Ethan Bierlein | No problem. If there's anything you think could be improved, feel free to change it or let me know. :) | |
| Jun 21, 2017 at 23:08 | comment | added | Peilonrayz Mod | @EthanBierlein Nice change, thank you, I like your additional bullet points. And I think it's fair that you removed the ones you did, they didn't really fit in. | |
| Jun 21, 2017 at 23:04 | comment | added | Ethan Bierlein | I've added some bullet points more related to language design into the scoring list. I removed the two points regarding base changing, since I felt that they were rather domain-specific. | |
| Jun 21, 2017 at 23:03 | history | edited | Ethan Bierlein | CC BY-SA 3.0 |
Added one extra point.
|
| Jun 21, 2017 at 22:35 | comment | added | Peilonrayz Mod | @EthanBierlein Oh I forgot you can choose how to score it too, :) Yeah the AST / other features is a bit icky... I only really know like 2 languages, and so I'm out out of my domain here, so if you can think of a nice way to clean up the situation I'd be more than happy to look into it! :) | |
| Jun 21, 2017 at 22:32 | comment | added | Ethan Bierlein | Sure, I can see what I can edit in. As for the AST-related point, I guess I can agree. | |
| Jun 21, 2017 at 22:31 | comment | added | Peilonrayz Mod | @EthanBierlein I'm not sure how to fully phrase the intermarry language one, would you mind editing it in? As for your other comment, it's 'only' one point, making your code more functional / other paradigm would probably be easier and as rewarding... But I get you, there's a heavy bias to make your language a 'god language', which will likely have the drawbacks of a 'god class'. | |
| Jun 21, 2017 at 19:32 | comment | added | Ethan Bierlein | Another, unrelated note: I have somewhat of an issue with the second-to-last scoring bullet point (Use an AST for your languages syntax.), as there are a not-insignificant number of languages which don't use ASTs, like concatenative or point-free languages. | |
| Jun 21, 2017 at 19:31 | comment | added | Ethan Bierlein | I'm leaning towards not scoring it at the moment, however if it is to be scored, then I'd say contestants get 1 point for implementing one. | |
| Jun 21, 2017 at 8:45 | comment | added | Peilonrayz Mod | @EthanBierlein Personally I don't know. We could say they're one language each, and possibly allow two languages, or just say one language per entrée, but IDK. How would you score them? | |
| Jun 20, 2017 at 22:06 | comment | added | Ethan Bierlein | There are many programming languages which implement an intermediary language or executable bytecode format of some kind (Python, C#, VB.NET, etc.) which code in the parent language is compiled to. If a contestant were to implement such a feature, how would it be scored? | |
| Jun 15, 2017 at 6:43 | comment | added | Peilonrayz Mod | @Justin First it's not a requirement, nor a soft requirement, it's purely optional. I also can't imagine anyone putting the effort into making a language and not wanting to write anything in it, so I see it as scoring the inevitable. Also, if this has as many entries as most other community challenges, there will be no extra questions, but for a flood of an extra question per day would require about 50 entries over the three month period. Which is not that much, but a lot more than I'd expect to enter. | |
| Jun 15, 2017 at 0:41 | comment | added | Justin | @CAD97 I understand that it would be on topic, but I still think it floods extra questions into the feed, which I personally don't think of as a good thing. On the one hand, if someone wanted to post a question using their language, I don't think there should be anything stopping them, but on the other hand, I don't think "requiring" (albeit a soft require) them to do so is a good idea. | |
| Jun 15, 2017 at 0:31 | comment | added | CAD97 | @Justin Here is the most recent meta discussion about Domain Specific Languages. Consensus seems to be the questions are OK but unlikely to get much attention. | |
| Jun 15, 2017 at 0:26 | comment | added | CAD97 | @Justin Just to share my plans: if I get NAFI (my pet language I'm starting work on) up and running in time, I plan to have at least one CR question on a standard library type. So something like an unbounded Integer built from the primitives in the language. And I plan to use NAFI as the (user-facing) script language for a game I have planned way in the future as well. Questions in the language would be judged as any other DSL question would be. If it's a good question, good. If it's bad, close it (and don't award the point). | |
| Jun 14, 2017 at 21:52 | comment | added | Justin | "Write a Code Review question in your language." I would be wary of this. Languages created for this challenge would be unlikely to be used elsewhere. Do we really want to open another question for it? It might be better to have some concrete thing to implement in your language, such as some sort of List type. | |
| Jun 11, 2017 at 17:22 | history | edited | PeilonrayzMod | CC BY-SA 3.0 |
Update to use CAD97's GitHub repo for paradigm support. And to allow external repositories of code to be used.
|
| Jun 11, 2017 at 4:35 | comment | added | CAD97 | One better: Here's a list of some paradigms and suggestions for scoring. It's not perfect but it offers some structure and semblance of balance between features inherent to the different paradigms. It's not perfect, and it's definitely not a document for beginners, but just some of the knowledge I've picked up and my personal opinions on language features. | |
| Jun 11, 2017 at 2:29 | comment | added | Peilonrayz Mod | @CAD97 Entries will be posted on meta, so a git link of the code is possible, if you don't want to post it all as code review questions. I'll update the answer tomorrow to include that. If you have any more questions, please just ask | |
| Jun 11, 2017 at 2:23 | comment | added | CAD97 | Just checking: the language I've been hacking on on-and-off (I'm working on supporting tooling currently for the next complete-rewrite-refactor stage) has and will have a lot of supporting code as I'm making most of the toolchain from scratch (because the point is to learn about how programming languages work full-stack). How much of the project would be expected to be in the post and how much external? Could I break it into more manageable chunks? | |
| Jun 11, 2017 at 2:14 | comment | added | CAD97 |
@Hosch250 I think if you define a subset language and then run it through the compiler for the superset language that counts as an eval. Because you aren't interpreting the code yourself, you're using a different program to interpret the code. The spirit of the rule is that you can require programs as the platform for your language but you should do the actual transformation of source code into result yourself. However you could use an ANTLR file which did simple arithmetic for some points. Then your required platform software would be the ANTLR interpreter.
|
|
| Jun 10, 2017 at 15:16 | comment | added | user34073 | No, it isn't eval, but it is kind of close. Basically, I would just have to write a spec for a subset of an existing language, then run it as if it was a program written in that language. | |
| Jun 10, 2017 at 15:13 | comment | added | Peilonrayz Mod |
@Hosch250 I don't know enough about those things to be definitive. If I can download those tools on Windows, Linux or Mac, follow some instructions, and bam you language works, that is perfectly valid. However I first thought you were on about the eval point, do you think that passes the eval requirement? (I know near nothing of the three technology's you're on about)
|
|
| Jun 10, 2017 at 15:03 | comment | added | user34073 | So, could I write an ANTLR file for a subset of C# and just run it with MS's C# tools? Wouldn't that fall under the "needing other programs to run"? | |
| Jun 9, 2017 at 20:49 | comment | added | Peilonrayz Mod | @CAD97 My intent is for each paradigm to score points for being implemented, yes I've not included all paradigms, and I need to work on that. Another example of this is 'first-class and higher-order functions' are common in functional languages, but relatively uncommon in non-functional languages. | |
| Jun 9, 2017 at 18:57 | comment | added | CAD97 | I'm already "working" on this for my own gratification, so +1 from me :P (Though I'd suggest avoiding giving points for allowing classes to inherit; e.g. rust doesn't do that, and it'd be less fair if making a OO language got more point potential.) | |
| Jun 8, 2017 at 8:11 | comment | added | Peilonrayz Mod | @EthanBierlein That could work, it may be a bit unfair on people that don't know the paradigms, but they're unlikely to implement a paradigm they don't know... | |
| Jun 7, 2017 at 14:19 | comment | added | Ethan Bierlein | In regards to proving paradigms, perhaps requiring contestants to submit paradigm-specific unit tests would work? In regards to scoring, +1 point for each paradigm implemented? | |
| Jun 7, 2017 at 14:16 | comment | added | Peilonrayz Mod | @EthanBierlein Fair, I thought I included Functional too, maybe I should add tail recursion for that. I'll try learn a few key features of other paradigms to make bullet points for them. Thank you :) As for per paradigm, I don't really know how to score that, and for contestants to be able to 'prove' that. | |
| Jun 7, 2017 at 14:06 | comment | added | Ethan Bierlein | A couple of ideas came to my head this morning while re-reading the post. Many of the bullet points seem to focus strongly around OOP and imperative programming, with little regard to other programming paradigms. Perhaps contestants could get a point for each paradigm their language allows? | |
| Jun 7, 2017 at 9:19 | comment | added | Peilonrayz Mod | @EthanBierlein Funnily enough, I was originally going to suggest doing a calculator, but that's already been done before ): If you have any ideas I've not posted, then I'd be more more then happy to hear them too, :) | |
| Jun 7, 2017 at 2:14 | comment | added | Ethan Bierlein | I like this idea! Interestingly enough, I was thinking about proposing something similar earlier today, but you beat me to it. :) | |
| Jun 7, 2017 at 0:09 | history | answered | PeilonrayzMod | CC BY-SA 3.0 |