LINUX.ORG.RU

Конкурс на простейшую программу

 


0

1

Условие: составить кратчайшую программу на любимом языке и продемонстрировать её технлогию сборки, запуска….

Бью рекорд Hello world на классическом Си. Никаких заголовочных файлов и стандартных библиотек ! Впрочем, нестандартные тоже не нужны.

В вашем любимом редакторе пишем в файл simplest.c:

int main(int argc){
        return argc;
}

компиляция : gcc simplest.c

запуск с демонстраций вывода количества аргументов программы в качестве кодов её возврата :

./a.out ; echo $? 
./a.out - ; echo $? 
./a.out - - ; echo $? 

$ echo Hello world!
$ python3 -c "print('Hello world!')"
aquadon ★★★★★
()
Последнее исправление: aquadon (всего исправлений: 1)
Ответ на: комментарий от Artamudo

Ассемблер

На ассемблере нужно и несколько: под каждую знакомую архитектуру и с синтаксисами Intel/AT&T (nasm/gas).

Android
() автор топика
php -r "echo date('r', microtime(true)), PHP_EOL;"
anonymous
()

Это заявка на Senior Developer, не меньше

anonymous
()

Никаких заголовочных файлов и стандартных библиотек !

Вранье! Компилируй c -nostdlib

gcc -nostdlib simplest.c
anonymous
()

Паскаль

begin Halt(ParamCount) end.

Компиляция (FPC): fpc a.pas
Запуск с демонстрацией количества аргументов:
./a ; echo $?
./a - ; echo $?
./a - - ; echo $?

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от anonymous

gcc опция -nostdlib

Что-то пошло не так:

gcc -nostdlib simplest.c 
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400144

Но оно и так катит:

ldd a.out 
не является динамическим исполняемым файлом

И размерчик: всего 1536 байт.

Android
() автор топика
Ответ на: комментарий от PolarFox

printf без определения?

А что, в программе, где упомянуты вызовы сторонних функций (printf, в нашем случае), заголовочные файлы (stdio.h) с их описаниями уже не требуются ? Это, наверное, компиляторы с функциями искуственного интеллекта от JetBrains…

Android
() автор топика
Ответ на: комментарий от anonymous

А вообще если серьезно, то вопрос в том, что считать программой. А на этот вопрос нормальных ответов нет.

anonymous
()
Ответ на: комментарий от anonymous

И вообще очень многая компьютерная терминология, на самом деле, очень фрагментарная, неточная, противоречивая, неудобная. Но всем почему-то пофиг. Я не понимаю этого.

anonymous
()
Ответ на: комментарий от Einstok_Fair

Этот язык не является полным по Тьюрингу.

Вы дисквалифицированы.

anonymous
()

«main(int argc)» - это платформозависимо. По стандарту, main(int, char**), либо main(void).

anonymous
()

Вообще странное соревнование, вы не находите? Все соревнуются, у кого короче.

anonymous
()
Ответ на: комментарий от anonymous

Если запуск не требуется, то кратчайшая программа которую проглотит компилятор ­— файл размером 0 байт.

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

определение программы

Я понимаю программой, какой-то написанный в текстовом редакторе или строке код, который можно исполнить в ОС. Ну и чтобы этот код что-то обрабатывал, желательно, хотя… это уже конкретизации и вариации конкурсных заданий для следующих лулзов :)

И под сложностью в конкурсе считается понимаемость человеческим мозгом (субъективное восприятие), а не количество знаков (объективный размер).

Android
() автор топика
Ответ на: gcc опция -nostdlib от Android

Но оно и так катит:

Оно не катит, оно падает.

anonymous
()
Ответ на: комментарий от PolarFox

кратчайшая программа которую проглотит компилятор ­— файл размером 0 байт

Не уверен что такая соответствует стандарту. Хотя мой вариант тоже UB.

anonymous
()

Победил Метапрог.
В нем текста нет.

Владимир

anonymous
()
Ответ на: определение программы от Android

Я понимаю программой, какой-то написанный в текстовом редакторе или строке код, который можно исполнить в ОС.

Ну то есть команда exit, набранная в виндовом терминале, является программой. Такая трактовка имеет право на жизнь. С другой стороны, в обычной жизни, говоря о программе, мы имеем в виду как минимум скрипт, то есть нечто, выполняющее определнную юизнес-задачу.

И под сложностью в конкурсе считается понимаемость человеческим мозгом, а не количество знаков.

Ну тогда надо было условия давать иначе. Типа: напишите программу, которая делает задачу Х, и при этом была бы максимально простой для понимания.

anonymous
()
Ответ на: Ня от beastie

С аргументами, как по условию:

package main

import "os"

func main() {
	os.Exit(len(os.Args))
}
beastie ★★★★★
()

Программа

import System.Environment
import System.Exit
main = fmap ((1+) . length) getArgs >>= (exitWith . ExitFailure)

Компиляция

ghc simplest.hs

Вывод

$ ./args ; echo $? 
1
$ ./args - ; echo $? 
2
$ ./args - - ; echo $? 
3
Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 2)
Ответ на: комментарий от PolarFox

Хз, так и не увидел у них в грамматике, что такое программа.

anonymous
()

сам делай свою домашку

anonymous
()
Ответ на: gcc опция -nostdlib от Android

Что-то пошло не так:

Так анонимус тебе и пытался намекнуть, что без стандартных библиотек твой пример не взлетит.

hobbit ★★★★★
()

а нафига? В чем вообще смысл конкурса? Я грешным делом думал, что разные языки пилят, чтобы писать на них что-то более нужное

Lrrr ★★★★★
()
Ответ на: комментарий от Lrrr

Преподаватели и эзотерики

Думаю, учителя и википедисты объяснить Вам смогут лучше: что такое традиция писать первую программу студентам с названием «Hello World» при обучении разным языкам.

А разные художники-исследователи расскажут, что такое эзотерические языки программирования (рекомендую погуглить).

Android
() автор топика
Ответ на: комментарий от deep-purple

Пронзил её своим императорским жезлом?

anonymous
()
Ответ на: комментарий от AntonI

У меня такая аж на 52 метра написана.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.