2010-02-13 4 views
12

Tôi đang xem xét sử dụng Go làm phương thức thay thế ngôn ngữ trình diễn ở mức độ thấp để C/Objective-C để triển khai thư viện cho ứng dụng iPhone. Có thể một trong các trình biên dịch Go tạo ra một thư viện có thể được liên kết vào một ứng dụng iPhone gốc với thời gian chạy Go, v.v. không? Có một cổng ARM cho Go hoặc không gccgo/gcc hỗ trợ này? Tôi tưởng tượng rằng kể từ khi gccgo sử dụng gcc như back-end và Xcode sử dụng gcc để biên dịch các ứng dụng iPhone mà có một cơ hội mạnh mẽ rằng điều này là có thể. Nếu có thể, tôi sẽ thiết lập điều đó như thế nào trong một dự án Xcode?Sử dụng Go để viết thư viện cho ứng dụng iPhone

Có ai đã thử điều này hoặc thấy nó được thảo luận trước đây không? (Khi tôi thực hiện tìm kiếm trên Google như "biên dịch mã đi iphone", phần "go" hoàn toàn không được sử dụng và tôi chỉ nhận được nội dung về phát triển iPhone.)

Trả lời

7

Go không hỗ trợ nền tảng iphone ngay bây giờ, nhưng nó hỗ trợ bộ vi xử lý ARM. Tuy nhiên, chưa có nhiều thảo luận về điều này trên danh sách gửi thư.

1

Thậm chí nếu có thể, tôi nghi ngờ Go chậm hơn đáng kể so với C hoặc Mục tiêu C. Hầu hết các điểm chuẩn độc lập dường như cho thấy hiệu suất kém bằng cách sử dụng các phiên bản phát triển hiện tại. Những số này microbenchmarks against C suggest Đi chậm hơn 2 đến 150 lần so với C. Nó thậm chí còn chậm hơn Java và C# Mono. Vì vậy, tôi thấy ít lý do để gọi Go một lựa chọn thực hiện.

Mặc dù nó phụ thuộc vào ứng dụng của bạn, tôi nghi ngờ việc tận dụng api GPU là đặt cược tốt nhất cho hầu hết các vấn đề về hiệu suất.

+0

Vì vậy, Go đang nhắm mục tiêu thay thế C#/Java trên máy chủ? Đó có phải là loại ý tưởng đó không? Tôi đoán C sẽ làm những gì tôi cần, nhưng tôi có thể sử dụng các chuỗi, hashtables, vv –

+0

Thật thú vị cũng nhìn vào cột kích thước 150x nhưng 624 (Go) vs 2579 (C). Bạn phát triển nhanh hơn và trong thời gian ứng dụng của bạn trở nên thành công, trình biên dịch có thể đã được cải thiện. – fabrizioM

+0

>> Đi chậm hơn 2 đến 150 lần so với C << Điều tốt đẹp về biểu đồ hộp là bạn có thể dễ dàng thấy 150 là một ngoại lệ http://shootout.alioth.debian.org/u32/which-programming-languages- là-faster.php? gcc = on & go = on & calc = biểu đồ – igouy

2

Một điều cần xem ít nhất là Lua. Nó nhanh và là ngôn ngữ tôi thích sử dụng. iPhone Wax sử dụng lua.

+0

Tôi chỉ đọc hướng dẫn tham khảo tuần này! Những gì tôi thực sự thực hiện là một ngôn ngữ kịch bản và các nguồn Lua C có thể hữu ích mặc dù việc thực hiện một ngôn ngữ kịch bản trong một ngôn ngữ kịch bản khác có lẽ sẽ là một ý tưởng tồi. (Nguyên mẫu của tôi cho ngôn ngữ kịch bản là trong Haskell và tôi đang tìm kiếm một thay thế thích hợp.Tôi có thể sẽ phải thực hiện do C. –

+0

Tôi mạnh mẽ khuyên bạn nên chống lại bằng cách sử dụng Wax.Từ tháng 2 năm 2015, tất cả các ứng dụng mới gửi sẽ yêu cầu 64- iPhone Sáp không có hỗ trợ 64-bit, và thêm nó sẽ yêu cầu sửa chữa các tham số marshalling giữa lua và objc-c, trong cả hai hướng - một cái gì đó đã có lỗi trong 32-bit (unsigned ints không hoạt động đúng cách). –

0

Dự án Go Mobile hiện có một số hỗ trợ cho phát triển thiết bị di động iOS và Android. Xem phần wiki trên Building for IOS để biết chi tiết về đơn đăng ký của bạn.