برنامج عند تنفيذه يقوم بطباعة محتواه (السورس كود)
برنامج يقوم بإنشاء نسخ من نفسه (procceses) بصورة متكررة. كن حذراً عند تشغيل البرنامج لأن نظام التشغيل سيتوقف عن الإستجابة وستحتاج لإعادة تشغيله (i warned you :P).
برنامج يقوم بإستقبال إثنان من أسماء الملفات عبر command line arguments يقوم بقراءة أسطر الملف الأول ويخلطها عشوائياً (shuffling) ثم يكتبها في الملف الثاني.
الهدف من هذا الموضوع إني أريد معرفة كيف تعمل بعض الأشياء في لغات البرمجة المختلفة (بالإضافة للتسلية ايضاً)
ملحوظة لمبرمجي جافاسكربت: استخدم nodejs
التعليقات
البرامج باستخدام لغة php
البرنامج الأول:
<?php
echo htmlspecialchars(file_get_contents( __FILE__ ));
?>
البرنامج الثاني:
<?php
class myClass
{
public function __construct()
{
echo "Hello";
}
}
while(true)
{
new myClass();
}
?>
البرنامج الثالث:
<?php
$stdin = explode(' ', fgets(STDIN));
$content = explode("\n", file_get_contents($stdin[0]));
shuffle($content);
file_put_contents($stdin[1], implode("\n", $content));
?>
البرامج بإستخدام بايثون
البرنامج الأول:
with open(__file__, "r") as f:
print(f.read())
البرنامج الثاني (يمكن تنفيذه بطرق أخرى ولكن هذه أسهل طريقة):
import os
while True:
os.fork()
البرنامج الثالث:
from sys import argv
from random import shuffle
input_file = argv[1]
output_file = argv[2]
with open(input_file, "r") as f:
lines = [line for line in f]
shuffle(lines)
with open(output_file, "w") as f:
for line in lines:
f.write(line)
البرمجة باستخدام لغة الجافاسكربت
البرنامج الأول
console.log(
require('fs').readFileSync(process.argv[1],'utf8')
);
البرنامج الثاني
var fs = require('fs');
eval(fs.readFileSync(process.argv[1],'utf-8'));
البرنامج الثالث
#!/usr/bin/env node
// test command './program3.js program1.js helloWorld'
var fs = require("fs"),
_ = require('underscore'),
file = fs.readFileSync(process.argv[2],'utf-8'),
writeto = process.argv[3];
fs.writeFileSync(writeto,_.shuffle(file.split('\n')).join('\n'),{encoding: 'utf-8'});
اللغة المستعملة: Bash
البرنامج الأول:
#!/usr/bin/bash
cat $0
البرنامج الثاني:
#!/usr/bin/bash
echo `date` >> log # optional step
bash $0 &
البرنامج الثالث:
#!/usr/bin/bash
# verify number of args is exactly 2
[[ $# -eq 2 ]] || exit 1 # optional step
i=0
# read the input file (first arg) line by line
# and put them in an array
while IFS= read -r content[$i]; do ((i++)); done < $1
# shuffle the content of the array and
# redirect it to the out file (second arg)
shuff -e ${content[@]} > $2