مقدمه ای بر پرل

در پست قبلی سعی کردم تا حدودی با پرل، آشناتون کنم. در این پست هم قصد دارم تا حدودی بیسیک های پرل رو بررسی کنم. همونطور که در پست قبلی اشاره کردم، پرل شباهت بسیار زیادی به C داره، البته این شباهت به php بیشتره تا C ، ولی خب معمولا بیان میشه که پرل سینتکس مشابه C داره. شما چه C بدونید و چه php ، کد زدن با پرل براتون بسیار راحت میشه. خب، بذارید از اول اول شروع کنیم، یعنی نصب و راه اندازی پرل روی یه سیستم لینوکسی، باید بگم که پرل معمولا روی توزیع های آماده (مثل اوبونتو) نصب شده، چرا که بخش عظیمی از کانفیگ فایلها، توسط اسکریپت های پرل انجام میشه. ولی روی توزیع هایی که آماده نیستند (مثل آرچ، جنتو و …) معمولا نصب نیست (ولی با نصب X نصب میشه و خیالتون از این بابت راحت باشه). حالا که خیالتون راحت شد که پرل رو دارید ( 😀 ) ، بیاید مثل دو پست قبلی، به دنیا سلام کنید. برای این کار، یه فایل به اسم hello.pl ایجاد کنید و داخلش بنویسید :

کد   
print "Hello, World!\n";

خب حالا بخوایم این کد رو آنالیز کنیم، print که مشخصه کارش چیه، یک رشته متنی رو چاپ میکنه که روبروش هم ما از ” استفاده کردیم، و یک متن نوشتیم. اون کرکتر بک اسلش هم یک خط جدید برامون ایجاد میکنه. اما میشه این رو طور دیگه هم نوشت. در واقع میتونید متن Hello, World رو درون یک متغیر بریزید و متغیر رو چاپ کنید!

کد   
$hello = "Hello, World";
 
print "$hello\n";

خب، از این کد میشه به شباهت زیاد پرل با php هم پی برد، پرل هرچیزی که با $ شروع بشه رو خودکار متغیر در نظر میگیره. خب انواع متغیر در پرل مثل سایر زبان ها، به عدد صحیح و ممیز شناور و … تقسیم میشه . در واقع در کد زیر مشخص میشه که این کد ها چی هستند :

کد   
$int = 1;
$float = 3.14;
$char = 'a';
$string = 'Hello, World';

البته اینها تنها انواع داده در پرل نیستند، و در آینده انواع داده ای بیشتری رو معرفی خواهم کرد. در انتها هم باید بگم که تا اینجا، شما تقریبا بیشتر کارهایی که با پرل در یک سیستم انجام میشه رو درک کردید، ولی خب باقی بخش های این زبان هم لازمه یاد گرفت و ازشون استفاده برد.

Share

پرل، دوست خوب من.

در مطلب قبلی، حدود ۱۱ تا زبان رو معرفی کردم، کاربردهاشون رو گفتم و از طریق اونها به دنیا سلام کردم. زبان Perl هم یکی از اونهایی بود که توی اون مقاله بهش اشاره کرده بودم، و قطعه کدی که قرار داده بودم :

کد   
print "Hello, World\n";

بود. علی الظاهر، از همین قطعه کد، میتونید اطلاعات خوبی در مورد پرل بدست بیارید. مثلا با دیدن ; آخر خط، یاد C میفتید، و باید بگم این یادآوری درست بوده. یکی از ویژگی های پرل که معمولا بهش اشاره میشه، سینتکس مشابه C هست. از این مطالب بگذریم، برسیم به این که چرا من پرل رو دوست دارم؟ چون پرل یک سری قلق هایی داره که در زبان های دیگه نیستند. مثلا به جای تابع به شکل مرسوم، یک سری ساب روتین داره، که ابتدای قضیه، بهش نمی گیم چند تا آرگومان دریافت کنه. مثلا ساب روتین زیر، اسم شما رو میگیره و بهتون سلام میکنه :

کد   
sub Greet{
 "Hello, @_[0]";
 }
 
print Greet("Muhammadreza");

خب این نوع تابع نویسی، خیلی با چیزی که مثلا توی روبی باهاش سر و کار داریم،متفاوته. مثلا توی روبی همین تابع به این شکل نوشته میشه :

کد   
def Greet(name)
 return "Hello, #{name}"
end
 
puts Greet("Muhammadreza")

البته این یک مورد تا حدودی عجیب غریب هست، ولی اگر C++/C کار کرده باشید، ساختار شرطی، و سایر ساختار ها در پرل براتون بسیار آسان خواهد شد :

کد   
$var = 4;
 
if($var == 5) {
 print "True";
} else {
   print "False";
}

و این کد نشون میده که چقدر ساختار پرل به C نزدیک هست. برای مثال همین کد در C به شکل زیر نوشته میشه :

کد   
int var = 4;
 
if(var == 5){
 puts("True");
 } else {
  puts("Fales");
 }

و سایر موارد ساختاری که با خوندن مستندات پرل، باهاشون آشنا خواهید شد. حالا میرسیم به این که پرل کجاها استفاده میشه؟ تقریبا پرل در حال حاضر بیشترین کاربردش، برای پردازش متن هست، ولی چیزهای جالبی همچنان ازش بیرون میاد. مثل اسکریپت slowloris.pl که برای DDoS زدن ساخته شده، یا فرمورک های وب متعدد و … . و خب یکی هم مثل من صرفا برای فان ازش استفاده میکنه!

امیدوارم این پست بدردتون خورده باشه، وانگیزه ای براتون ایجاد کرده باشه که زبان های جدید رو، حتی برای فان هم که شده یاد بگیرید 🙂

Share

قطعه کد «سلام دنیا» در زبان های مورد علاقه من

خیلی وقت بود چنین قصدی رو داشتم، تا این که ابتکار علیرضا رو توی نوشتن پست اول وبلاگ دیدم. البته علیرضا اشاره ای نکرده که آیا این زبان ها، زبان مورد علاقش هستند، یا نه. ولی بهرحال ابتکار جالبی پشت این قضیه بود و من تصمیم گرفتم تا «سلام دنیا» رو در زبان های مورد علاقه خودم، و البته به سبک مورد علاقه خودم بنویسم.

۱. C .

میشه گفت، کیه که C رو نشناسه؟ در واقع یکی از زبانهایی که لازمه هرکسی تا حدودی بدوندش و باهاش کد بزنه. و این زبان بخاطر ذاتش، که سازندگی هست (تقریبا ۹۰٪ سیستم عاملهای موجود با C نوشته شدند).

کد   
#include <stdio.h>
 
int main(){
 puts("Hello, World!");
 return 0;
}

۲. ++C

خب اگر دقیقا از کتابخانه stdio استفاده کنید، هیچ فرقی با C نخواهد داشت. بنابراین از این کد می گذریم 🙂

۳. Java

جاوا، یک زبان شی گرا، همه منظوره و همه فن حریف به حساب میاد. کمتر کسی هست که این زبان رو نشناسه و حداقل گذرش یک بار به دباغ خونه جاوا نیفتاده باشه. آندروید، و برنامه هاش تحت این زبان توسعه داده میشن.

کد   
system.out.println("Hello, World!");

۴. Go

خب این زبان هم که یک زبان جدید و توسعه یافته توسط گوگل هست، شباهت بسیاری به C داره. اگر کمی وارد این زبان بشید، متوجه منظورم خواهید شد!

کد   
package main
import "fmt"
 
func main(){
 fmt.Println("Hello, World!")
 }

۵. Lisp

خب لیسپ هم یک زبان جالب و در نوع خودش باحاله! ممکنه کسی از این زبان استفاده نکنه، ولی دونستنش بد نیست. بخصوص این که خیلی از کورس های پیاده سازی زبان برنامه سازی در اینترنت، پیاده سازی لیسپ به یک زبان مطرح هست.

کد   
(print "Hello, World")

۶. Haskell

این زبان هم مدتها یکی از زبان های مورد علاقم بود. گرچه یه سری ایرادات نسبتا بزرگی داره، ولی خب برای درک الگوریتم یکی از بهترین هاست.

کد   
putStrLn("Hello, World!")

۷. Coffee Script

خب، در زمونه ای که حتی با جاوااسکریپت کامپایلر C می نویسن، بد نیست خودش یا یکی از فک و فامیلاش رو بلد باشیم! Coffee Script هم یکی دیگر از زبان های مورد علاقه من هست که یادش گرفتم و ازش استفاده میکنم.

کد   
console.log "Hello, World!"

۸. Ruby

خب حتما همه میدونید که این زبان، زبانی هست که خیلی کارها توش/براش کردم. از نوشتن کتاب راهنما گرفته تا نوشتن بات تلگرام ! به نظرم که اگر برنامه نویس با زبانش کنار بیاد، مشکلی نخواهد داشت در فان ساختن با زبان 🙂

کد   
puts "Hello, World!"

۹. Perl

این زبان، یکی از اولین تلاش هام برای اسکریپت نویس شدن بود. هنوزم که هنوزه دوستش دارم و گهگاهی اسکریپت های کوچیک و جمع و جور باهاش مینویسم.

کد   
print "Hello,World!\n";

۱۰. php

زبان مورد علاقه من در زمینه وب!

کد   
<?php
 echo "Hello, World!\n";
?>

۱۱ . Python

این زبان، تا حدودی مورد علاقم هست البته نسخه ۲ش. قدرتش هم تقریبا در همه زمینه ها، به اثبات رسیده

کد   
print 'Hello, World!'

 

خب، امیدوارم از این پستم خوشتون اومده باشه 🙂

Share

شروع ساخت یک زبان برنامه نویسی ساده

گرچه قبلا سعی کردم چنین کاری کنم و حتی نسخه قدیمی WENT رو هم نوشتم، ولی کار بهینه نبود، و تصمیم گرفتم همون WENT رو بازنویسی کنم. پس تصمیم گرفتم کمی بیشتر در اعماق روبی سفر کنم و با کشفیات جدید، دوباره زبانم رو بنویسم. توی این مطلب خیلی بحث رو کش نمیدم، فقط یکم در مورد این که زبان اون پشت چی کار میکنه توضیح میدم و بعد یک تکه کد ساده میزنم.

هر زبانی، اون پشت توی مفسر یا کامپایلر، بخشی داره که هرچی که بهش دادیم رو میخونه. اصولا این بخش Parser نامیده میشه و هرچی توی یک خط برنامه هست رو میخونه، به یک تابع میفرسته و بعد عملیات رو روش انجام میده. برای مثال عبارت ۲ + ۲ رو در نظر بگیرید، این عبارت از ۳ کاراکتر تشکیل شده، ۲ و ۲ و +. این رو که به مفسر بدید، میفهمه که باید ۲ و ۲ با هم جمع شن و جواب بشه ۴ (یا شایدم ۵ 😀 ). ولی این کار چطوری توی مفسر اتفاق میفته؟ کد زیر توی روبی بهتون میگه :

کد   
a = "2 + 2"
a = a.split(' ')
sum = 0
for i in a
  sum += i.to_i
end
 
puts sum

توجه کنید که این کد بسیار کوتاه شده و اصولا منطق زبان درش رعایت نشده. ولی خب برای توضیح، کار راه اندازه. در خط اول، رشته ۲+۲ رو توی متغیر a ریختیم و بعدش توی یک آرایه قرارشون دادیم. دقت کنید که اینجا فاصله بسیار اهمیت داره ! چرا که جداسازی درون آرایه کاملا به فواصل وابستس. بعد از اون، اومدم یه متغیر ایجاد کردم به اسم sum و مقدارش رو صفر قرار دادم. بعد توی یک حلقه، تمام اعضای آرایه رو به عدد صحیح تبدیل کردم و بعد ریختم توی sum . به این شکل، عملیات جمع رو به زبان برنامه سازی فهموندیم. حالا برای بهتر شدن زبان، باید کلاس و تابع و … بنویسیم. وقتی نسخه جدید WENT رو نوشتم سعی میکنم اینجا در موردش یک مطلب کوتاه بنویسم.

موفق باشید 🙂

Share