Skip to main content

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