首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用你最喜欢的语言用另一种语言编写程序

用你最喜欢的语言用另一种语言编写程序
EN

Code Golf用户
提问于 2014-03-20 19:04:02
回答 27查看 23.9K关注 0票数 172

坚定的真正程序员可以用任何语言编写Fortran程序。

从真正的程序员不要使用Pascal

您的任务是用所选择的编程语言编写程序,但只允许使用另一种语言。也就是说,抛弃一种语言中的所有编码约定,代之以另一种语言的编码约定。越多越好。使您的程序看起来像是用另一种语言编写的。

例如,讨厌Java的Python粉丝可以用Java编写以下Python程序:

代码语言:javascript
复制
void my_function()                                                             {
    int i = 9                                                                  ;
    while(i>0)                                                                 {
        System.out.println("Hello!")                                           ;
        i = i - 1                                                              ;}}

被迫使用C语言的Pascal爱好者可以这样写:

代码语言:javascript
复制
#define begin {
#define end }
#define then
#define writeln(str) puts(str)

if (i == 10) then
begin
    writeln("I hate C");
end

你必须写完整的程序。这个程序不需要做任何有用的事情。

祝好运。这是一场受欢迎的比赛,所以得票最多的代码赢了!

EN

回答 27

Code Golf用户

发布于 2014-03-21 10:28:22

C在C++

中的应用

代码语言:javascript
复制
#include <stdio.h>

int main(int argc, char** argv)
{
        printf("Hello world!\n");
        return 0;
}
票数 143
EN

Code Golf用户

发布于 2014-03-25 10:02:18

英语中的C

代码语言:javascript
复制
#include <stdio.h>
#define This
#define program     int main() {
#define aims
#define to
#define output      printf(
#define some
#define example
#define text(a)     #a
#define the
#define screen      "\n");
#define it          
#define also
#define will
#define calculate   ;int a = 
#define result
#define of
#define and
#define print       ; printf("%d\n", a);
#define seriously   return 0; }

This program aims to output some example text (Hello) to the screen;
it also will calculate the result of 3 + 4 and print the result; seriously

有什么办法消除;吗?

票数 105
EN

Code Golf用户

发布于 2014-03-21 05:29:35

我想聪明的伦纳特·奥古斯松已经赢了两次了。

首先,下面是他从2009年开始实现BASIC作为Haskell Monadic DSL的“周末黑客”的一个例子:

代码语言:javascript
复制
import BASIC

main = runBASIC' $ do

    10 LET I =: 1
    20 LET S =: 0
    30 LET S =: S + 1/I
    40 LET I =: I + 1
    50 IF I <> 100000000 THEN 30
    60 PRINT "Almost infinity is"
    70 PRINT S
    80 END

它通过重载数字类型来工作。行号实际上是接受参数的函数。行的其余部分是函数的参数。该函数返回抽象语法树的表示形式,供基本解释器使用。

我还建议你看看奥古斯松参加2006年国际混淆C大赛的参赛作品,在比赛中他设法挤进了4k:

  • 字节码解释器,用C的子集编写(他称之为模糊C)。
  • 一种模糊C ->字节码编译器,用字节码编写。

他们可以共享同一个文件,因为字节码放在C注释中。

自从我跟踪奥古斯松的作品已经有几年了,所以从那以后,他可能还想出了其他的绝妙的事情.

票数 74
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/24623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档