# Riddle: In an improved ocean

In an improved ocean, its results are faster and bigger than the results of changeling courses.

In coffee, it is actually nondescript, and after proofreading, it pretty much amounts to destroying and tossing the copy.

In half a swimmer's surname, it could help a spider with mass production, and with keeping problems distinct.

With something mistakenly named a successor, you might think it's plotting against you.

What is it?

• I edited and undeleted my answer. Apologies for the earlier mis-performance. – Willtech Mar 20 '18 at 11:29
• FYI, in case you don't notice the edit, I converted my partial answer to a complete attempt... – Alconja Mar 20 '18 at 12:17
• should there be a comma after and after proofreading, ? – Maslow Mar 20 '18 at 13:39
• @Maslow Sure, I guess that could make it a bit clearer grammatically. – Daniel Schepler Mar 20 '18 at 16:11
• I just edited to accept Maslow's edit suggestion, and also to add a couple new tags now that the answer is pretty much known (though the justifications still need some work). – Daniel Schepler Mar 20 '18 at 16:18

## 5 Answers

I believe the answer is

Templates (i.e. the use of generic programming in software development to avoid code duplication).

Each of the four lines relates to

how templates (or their rough equivalents) are used in different programming languages:

1. The first line is referring to C++ ("improved ocean" => sea plus => C++), where templates provide generic support. From @MOehm in the comments, C++ templates "will generate code for every instantiated type, so it's more optimized, but requires more memory but result in more memory consumption", which is what is alluded to by "results are faster and bigger than the results of changeling courses". Here, "changeling courses" refer to "polymorphic classes" (via inheritance), which would be one of the common alternatives to templating.
2. The second line refers to Java ("coffee" => (synonymous with) => Java), where their implementation is called generics (which is certainly "nondescript"), and is provided as pure syntactic sugar, which is not available at runtime. In other words, after compilation ("after proofreading") the type erasure ("destroying") results in byte code that is the equivalent of not using generics and just casting the relevant types ("tossing the copy").
3. The third line is about PHP ("half a swimmer's surname" => PHelPs => PHP), which is a language used predominantly to template web pages ("spider with mass production"), and as with any templating, it assists in enforcing a separation of concerns, by "keeping problems distinct".
4. The fourth line is referring to SQL ("successor" => sequel => SQL), which doesn't have templates per se, but allows similar meta/generic programming via the INFORMATION_SCHEMA (and a schema/schemer is certainly something that might be "plotting against you").

• This might be a coincidence, but there's a programming language named CoffeeScript that compiles into Javascript code. CoffeeScript's goal is to create a more elegant and fun way to type Javascript. Perhaps it means the process of its compilation, Reading the code and interpreting, compiling the CoffeeScript code into Javascript code and ignoring the copy AKA the CoffeeScript code. – IIRawCodeII Mar 20 '18 at 2:21
• @IIRawCodeII - I considered that, but figured Java fit better with the other two. Also, your remarks about trans/compiling the code itself (as opposed to a specific single code feature), could equally be applied to Java. – Alconja Mar 20 '18 at 2:51
• On the fourth line, successor might be referring to a sequel. If you get what I mean. – Rick van Osta Mar 20 '18 at 7:53
• @RickvanOsta - Good spotting. That makes sense. Will update my answer... – Alconja Mar 20 '18 at 8:03
• In C++, a template will generate code for every instantiated type, so it's more optimized, but requires more memory. I think that and PHP templates are a good fit, but I'm not so convinced about the others. The thing about Java generics is that they aren't templates. – M Oehm Mar 20 '18 at 10:55

I think that the answer by @Alconja is on the right track for the first part of each clue. I will mark what else I think needs to be de-cryptified like this

In C++, its results are faster and bigger than the results of changeling courses.

In Java, it is actually nondescript, and after proofreading it pretty much amounts to destroying and tossing the copy.

In PHP, it could help a spider with mass production, and with keeping problems distinct.

With SQL, you might think it's plotting against you.

So, I do not know what changeling courses is but think that otherwise, it is a comparison as it is written. The results spoken of would seem to be the results of compiling the code. I haven't much experience with Java but, nondescript is "lacking distinctive or interesting features or characteristics" and "Java source code is compiled into bytecode when we use the javac compiler" which pretty much fits that description but, I cannot relate the second part of that clue except that bytecode does not resemble the original code... Cancel that, I think I have an answer after re-reading the fourth clue.

I am going to guess that the answer is executable code.

The first clue describes C++ executable code. The second clue describes Jave executable code. The third clue describes PHP executable code. The fourth clue describes executable code problems for SQL.

• Too many guesses? – Willtech Mar 20 '18 at 10:39
• Welcome to Puzzling.SE! To explain the downvotes you're getting: it's not so much that you're posting multiple guesses at once (I don't know what the community consensus is on that), but that you haven't explained any of them. You should explain how each of your answers fits the riddle, otherwise they're not considered answers. – F1Krazy Mar 20 '18 at 10:44
• Ahh. Okay, I guess I need to do more writing then and explain. – Willtech Mar 20 '18 at 10:49
• @F1Krazy Actually, is it against the rules if I have to justify everything to burn it and make it a work in progress? – Willtech Mar 20 '18 at 10:50
• You're perfectly allowed to delete your answer, add in your explanations, and then undelete it once you've finished. – F1Krazy Mar 20 '18 at 10:52

Based only on the very first hint

which realtes to c++ == sea plus plus == improved ocean (thanks @Alconja)

I would say that the solution is

templates

since it is opposed to

changeling courses == polymorphism, and the results of using templates rather than virtual calls gets you a bigger executable which is faster by avoiding virtual calls...

but, I have no idea how to fit the other hints, as

I do not know almost anything about the other "languages"

• This guess is the correct answer. (Actually, for "changeling courses" I was thinking specifically of "polymorphic classes".) Alconja's answer currently has correct explanations for lines 2 and 3. – Daniel Schepler Mar 20 '18 at 15:42
• Also, on a technical note, the speed improvement from templates is not just avoiding virtual calls, but also the fact that the optimizer can work individually on each template instantiation - and also can often inline the template instantiations and then apply further optimizations.. – Daniel Schepler Mar 20 '18 at 16:25

My guess:

Injection

It fits the second and fourth lines

2. Dependency Injection (syntactic sugar)
4. SQL injection (you might think it's plotting against you)

I think the answer might be

virtual

improved ocean

Refers to C++ that uses virtual methods.

Coffee

The Java Virtual Machine usually uses much of its resources to destroy temporary objects.

Half a swimmer

PHP can be modularized using Virtual() to load other code files.

Successor

Don't know how this fits into my answer