سلام
دوستان چه تفاوت هایی این دوزبان دارند برای کسی که بیشتر سمت بک اند وب واپ موبایل کار کنه کدومش بیشترمفید خواهدبود؟
@remex
سلام دوست عزیز
زبان rust یک زبان سیستمیه ولی go اینطور نیست
برای کار شما go خیلی سادهتر و کار راهاندازتره
ولی از نظر سرعت صرفا بخواید مقایسه کنید rust سریعتره
پیشنهاد من اینه که برید سمت go هم آینده داره هم جامعه بزرگ و رو به رشدی داره هم در خیلی از موارد دیگه به کارتون میاد
زبان سیستم یعنی چه؟ چه فرقی با زبان غیر سیستم داره؟
همچنین Strong Types
Statically Typed
Runtime
Realtime
اینا یعنی چی?
پس گو برای بک اند وب بهتراز راست هست؟
@kazemibardia132
گو ممکنه از پایتون و نود سریعتر باشه اما در بنچ مارکها هم مشخه Rust سرعت بالاتری داره
در واقع رقیب Rust در سنجش سرعت C++ هست و نه Go
در کمتر از یک دهه ، دو زبان برنامه نویسی جدید معرفی شدند. زبان Go که توسط گوگل ارائه شد و Rust توسط تیم Mozilla
هر دو زبان ویژگی های ضروری برای توسعه نرم افزار مدرن را ارائه می دهند:
جدا از این شباهتها ، Rust و Go تفاوتهایی زیادی با یکدیگر دارند; حال به بررسی چند تفاوت بین این 2 زبان میپردازیم:
use std::net::{TcpStream, TcpListener};
use std::io::{Read, Write};
use std::thread;
fn handle_read(mut stream: &TcpStream) {
let mut buf = [0u8; 4096];
match stream.read(&mut buf) {
Ok(_) => {
let req_str = String::from_utf8_lossy(&buf);
println!("{}", req_str);
},
Err(e) => println!("Unable to read stream: {}", e),
}
}
fn handle_write(mut stream: TcpStream) {
let response = b"HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html><body>Hello world</body></html>\r\n";
match stream.write(response) {
Ok(n) => println!("Response sent: {} bytes", n),
Err(e) => println!("Failed sending response: {}", e),
}
}
fn handle_client(stream: TcpStream) {
handle_read(&stream);
handle_write(stream);
}
fn main() {
let port = "8080";
let listener = TcpListener::bind(format!("127.0.0.1:{}", port)).unwrap();
println!("Listening for connections on port {}", port);
for stream in listener.incoming() {
match stream {
Ok(stream) => {
thread::spawn(|| {
handle_client(stream)
});
}
Err(e) => {
println!("Unable to connect: {}", e);
}
}
}
}
کد تقریبا مشابه در Go:
package main
import (
"fmt"
"io"
"log"
"net/http"
)
type handler struct{}
func (theHandler *handler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
log.Printf("Received request: %s\n", request.URL)
log.Printf("%v\n", request)
io.WriteString(writer, "Hello world!")
}
const port = "8080"
func main() {
server := http.Server{
Addr: fmt.Sprintf(":%s", port),
Handler: &handler{},
}
server.ListenAndServe()
}
ممکنه کار کردن با Go ساده تر به نظر برسه اما Rust از سمت دیگه گزینه های بیشتری (و در نتیجه قدرت بیشتری) رو در اختیار شما میذاره ..
پیروز باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟