Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Вы боитесь, что все компиляторы Go исчезнут?
который так или иначе возникает во всех языковых коммьюнити, и успеха в котором практически никто не добивался
реализовать её на C не представлялось возможным. На Go его реализовать будет намного прощеВот это поясните, пожалуйста. Как это — не возможно реализовать на С, а на другом ЯП — возможно.
As mentioned above, much of the runtime was translated to Go from C, which led to some reduction in heap sizes. It also improved performance slightly because the Go compiler is better at optimization, due to things like inlining, than the C compiler used to build the runtime.
Хотя, помимо соображений скорости, я не сильно вижу, чем решение с реализацией интерфейсов (как в btree, к примеру) явно лучше шаблонов.
Просто давайте откровенно — реализация generics — это всегда slowdown либо компилятора, либо рантайма
Ну и да — из личного опыта — мне не приходилось упираться в «отсутствие generics». Вообще. Никогда. Объясните, что я делаю не так? Какой тип софта я должен начать писать, чтобы упереться в это? Без сарказма вопрос.
На самом деле Go это как минимум третий язык который на стадии своего развития проходит через фазу «работаем пока без шаблонов/дженериков»
response = yield http_client.fetch("http://example.com")
do_something_with_response(response)
Я же правильно понимаю, что эти две строчки будут, грубо говоря, в main'e?
чем это отличается от обычного синхронного тупого кода на си, где http_client_fetch будет обычным блокирующим вызовом?
class GenAsyncHandler(RequestHandler):
@gen.coroutine
def get(self):
http_client = AsyncHTTPClient()
response = yield http_client.fetch("http://example.com")
do_something_with_response(response)
self.render("template.html")
Работают же мои демоны одновременно обслуживая множество соединений
искаропки он отлично работает с сетью в том числе с http и всякими вебсокетами, он легко интегрируется с Си (то есть он понимает сишные хедеры сам и не нужно биндинг писать совсем)
require «http»
server = HTTP::Server.new(8000, HTTP::StaticFileHandler.new("."))
server.listen
Про Crystal первый раз слышу — что у него с пониманием сишных хедеров?
Arc<RWLock<i32>>
(вот, кстати, и дженерики) просто для того, чтобы безопасно сделать целое число, которое можно читать/редактировать из разных потоков — не сказать, чтобы легко…Если активно используется interface{} и нет от этого никакого дискомфорта
то в рантайме накладных расходов дополнительных тоже не будет — то есть их будет не больше чем при ручном приведении и проверки типов.
PPS. Если не секрет, а на чем вы писали до Go? Какими еще языками пользуетесь?
Помимо чисто академического интереса («может ли язык скомпилировать сам себя»), который так или иначе возникает во всех языковых коммьюнити, и успеха в котором практически никто не добивался
Компилятор Go переписан на Go