LINUX.ORG.RU

Си vs JS

 ,


1

5

Хотел было взяться за изучение Си, он юниксвейный, быстрый, и все такое, но почитал некоторые статьи, с тестами, в том числе и на лоре были недавно, и оказалось, что JS уступает в скорости Си всего лишь в 2-3 раза, причем, разрыв стремительно сокращается. Глядишь, через годик он может и обогнать Си.

С другой стороны, я че то подумал, ведь JS тоже кросплатформенный, к тому же он «универсальный», годиться и для веба и для системного программирования. Может случиться, что Си через годик-второй вообще будет никому не нужен.

В связи с этим, у меня сомнения. Браться за Си или не браться? Есть ли перспективы?



Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от DeVliegendeHollander

Короче, правильно я понял, что указатель ссылается на значение (вычисляется в него), а ссылка ссылается на саму переменную, т.е. тоже вычисляется в значение, но этим значением является сама переменная?

selena-gomes
() автор топика
Ответ на: комментарий от Eddy_Em

Но, вообще то, судя по этой вот формулировке, это близко все-таки. Суть, вроде такая.

Указатель — переменная, содержащая адрес, по которому можно получить значение.

Ссылка (именно в С) — это точнее операция (оператор &), с помощью которой можно получить адрес любой переменной.

selena-gomes
() автор топика
Ответ на: комментарий от selena-gomes

Указатель — обычная переменная, в которой хранится адрес некоей области памяти приложения. Для того, чтобы получить доступ к значению, лежащему по этому адресу, указатель надо разыменовать. Т.к. там может лежать что угодно, компилятору нужно указывать тип переменной, на которую ссылается данный указатель. Все просто.

Ссылка (операция получения адреса переменной) просто возвращает адрес локальной памяти, где хранится данная переменная.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от selena-gomes

Нет, нет, нет... Беда-беда. Всё, больше с толку тебя сбивать не буду. Читай K&R внимательно и вдумчиво :-)

DeVliegendeHollander ★★
()
Ответ на: комментарий от selena-gomes

В K&R есть даже схемы функционирования механизма указателей, так что читай, смотри, пробуй. Там всё понятно сразу.

DeVliegendeHollander ★★
()
Ответ на: комментарий от Eddy_Em

И Богатырева пусть почитает, там полезные вещи есть.

Поддерживаю.

Ну тогда уж и Ван дер Линдена, но он пока только на english.

Но всё это после K&R.

Ну и в конце концов, после всех ранее упомянутых, неплохо бы и стандарт поизучать, там всё чётко, как топором, вырублено. Для себя, но и чтобы местные эксперты не обзывались «обезьяной с гранатой» :-)

DeVliegendeHollander ★★
()
Ответ на: комментарий от anonymous

Emscripten, придурок. ASM.js, придурок.

О, анонимных пророков подвалило. Ну я проникся, спасибо. Ты, детка, открыл мне глаза. Твоё домашнее задание выполнено.

sleepflint ★★★
()
Ответ на: комментарий от selena-gomes

нет. ссылка ( в понимании С++) это var параметр . короче реализаторы С++ посчитали что число ошибок вызваных эпизодическми либо забываниями разименований указателей внутри функции либо его(указателя) «перенастройкой» на ещё куда слишком часто , так что запилили новый синтаксис - теперь компилятор знает что аргументом(в случае ссылки) может быть только имя переменной ( вообщето просто адрес(то биш указатель типизированный) и тогда в теле_функции где фигурирует параметр прозрачно подставляется где нужно lvalue (т.е чтение по адресу), а где нужно rvalue(то биш записывание по этому адрессу) - общий эффект - в С++ появились классические var -параметры ( но , что самое забавное с НЮАНСАМИ - так что «весёлой отладки» во все поля).

т.е ссылки в С++ появились , для облегчения тяжёлой жизни программистов , лучше бы они(эти благодетели) на марс уже выбрались.

qulinxao ★★☆
()
Последнее исправление: qulinxao (всего исправлений: 1)
Ответ на: комментарий от selena-gomes

js — язык очень мощный, многие говорят, что это лисп
многие говорят, что это лисп
язык очень мощный
говорят, что это лисп
мощный
лисп

Вот ты и спалился, троллюшко.

Лисп вообще за пределами рунета неизвестен (за исключением самых маргинальных сообществ типа Y Combinator), а уж «мощным» считают его только ебанаты ЛОРа и Дыркача. Привет.

anonymous
()
Ответ на: комментарий от anonymous

Не, ну мы-то в рунете, тут полно зомбированных. Зачем зря нуба пугаешь - нубу объяснить вежливо надо, что лиспотроллей слушать вредно.

anonymous
()

Не слушай старперов, гляди сюда, обрати внимание на regex-dna бенчмарк - javascript обгоняет С на 36%, не говоря о размере кода. Через пару лет гугл выпустит V10 и С окажется на свалке истории, не теряй время понапрасну.

anonymous
()

прочитал первые штук 5 комментариев, неужели так массово повелись на этот вброс, это же слишком толсто даже для ЛОРа...

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от selena-gomes

Я просто подумал, нафига его учить, голову забивать, если он здохнет.

давай поищи работу на JS для системного программирования, если найдешь хоть 2, то я буду долго смеятся

umren ★★★★★
()
Ответ на: комментарий от DELIRIUM

Не. Тут 3 страницы «чиволек (жопо) язык Где, ,» обсуждает с Эдичкой и Голандцем ссылки в Си. В котором они большие спецы, как мы все знаем.

anonymous
()
Ответ на: комментарий от qulinxao

прищёл к вы воду оттом (когда думал о врзможности автоматизации процесса конверкания текстов (или другово)) , что ни возможно (тоесиь физически), поэтому вариант 1 ты троль но, это слишком усложняется - писать такую ху5ту несколько лет специально когда все просто перестают читать видя по овотарке или ты ондорукий свапщик на крайнем севере (юуге, но не запад) и которому нужно в мрорз -20 - набивать тексты на резистационном сенсорном дисплее 2 дуйма хуем, поэтому я решил что ты промто мулак.

anonymous
()
Ответ на: комментарий от anonymous

злоупотребляеш свалять чарли, цветы для элджернона.

qulinxao ★★☆
()
Ответ на: комментарий от anonymous

Можно не удалять сие произведение? Это первое сообщение за сегодня, которое поднимает настроение

minakov ★★★★★
()
Ответ на: комментарий от nerdogeek

Сервер под нагрузкой страдает от фрагментации памяти

Рили? Каким таким образом?

Можно написать аллокатор?

Зачем?

Желательно эффективный в многопоточной среде

В как ты выдал. А ты недодумался юзать аллокатор для каждого треда? Хотя возможно лет через 20 вы до этого дойдёте.

как tcalloc и ему подобные.

А я думал, что это надувные муляжи для домохозяек, а тут вон оно как: «эффективыне в многопоточной среде» - полезно, что сказать.

Что будет, если вдруг понадобится многопоточность?

Зачем?

Есть ли возможность организовать lock-free структуры данных?

оО, структуры данных, локфри. Вчера на парах проходил? А ты не подскажешь мне почему же они локфри? И зачем они нужны?

Carb
()

снегоходы vs валенки...

что JS уступает в скорости Си всего лишь в 2-3 раза, причем, разрыв стремительно сокращается.

советую тебе погуглить такие же значения, только для java. Будешь удивлен.

через годик он может и обогнать Си.

только во влажных мечтах веб-программистов.

Есть ли перспективы?

Не берись, ты все равно нифига не понимаешь. Например что скомпилируемые программы всегда будут быстрее интерпритируемых. Или то, что уровень абстракций в C и Java разный языки совершенно не взаимозаменяемые.

JS
годиться и для веба и для системного программирования.

Так и запишем:

selena-gomes  web гол. мозга

comp00 ★★★★
()
Ответ на: комментарий от Carb

Глупость в каждой строчке ответа. Её так много, что никто даже не начнёт разбирать, и ты так и останешься невеждой.

anonymous
()
Ответ на: комментарий от qulinxao

а тролль сделает вид, что он повёлся на то, что все остальные повелись, а это ещё более тонкий троллинг. and_we_need_to_go_deeper.jpg

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

Thats point! Right.

зы. одно из обьяснений эпизодический «безумий масс»

есть шутка вроде об этом же :

какую бы ахинейшую ахинее кто бы не предложил ( с фигой в кармане) обязательно найдутся индивиды на полном серьёзе приобрётшие такие(ахинейные) взгляды.

одно из последних напониманий о опастности таких игр - это как ни странно рпц «макаронный монстр» при всей самоиронии декларируемых принципов у них как организации очень быстро прошли фазы - так что теперь в этой организации действительно истово верующие вот в такое.

qulinxao ★★☆
()
Последнее исправление: qulinxao (всего исправлений: 1)
Ответ на: снегоходы vs валенки... от comp00

Например что скомпилируемые программы всегда будут быстрее интерпритируемых.

эээ при соблюдении , что идентичный (или хотя бы эквивалентный алгоритмы и констатна в скомпилированном алгоритме не перекрывает тормоза вносимые интерпретатором)

один из опровергающих примеров это Jit компилятор Self'а? vs чей нить хэндмэйд ассемблерное поделие.

обращу твое внимание Jit-компилятору даже нет необходимости транслировать в маш код на ходу для выгрыша у какого нить заточенного под конкретную платформу.

Jit-ковертеру как составной части интерпертатора достаточно учитывать полнее(с сравнении с компилятором который не может заранее специализировать код под неизвестное окружение ибо инфы нема) контекст исполнения . а интерпретации может сама по себе оставатся - интерпретатор возвращающий константу вполне себе интерпретатор.

qulinxao ★★☆
()
Ответ на: комментарий от anonymous

Ну давай, я жду - разоблачай меня полностью. Приведи пример хотябы одной глупости, разбери её и докажи, что это глупость. Её же так много, а ты её так сразу всю увидел - я в тебя верю. Я даже не сильно буду смеятся, когда ты обосраёшься на 2-м посте и сбежишь.

Carb
()
Ответ на: снегоходы vs валенки... от comp00

Например что скомпилируемые программы всегда будут быстрее интерпритируемых.

Уходи, глупый ламер. Возвращайся только когда сможешь провести четкую границу между компиляцией и интерпретацией (hint: не сможешь никогда).

anonymous
()
Ответ на: комментарий от Carb

Ну давай, я жду - разоблачай меня полностью. Приведи пример хотябы одной глупости, разбери её и докажи, что это глупость. Её же так много, а ты её так сразу всю увидел - я в тебя верю. Я даже не сильно буду смеятся, когда ты обосраёшься на 2-м посте и сбежишь.

Ты сам себя замечательно разоблачаешь. Не знаешь, что сервера страдают от фрагментации памяти, не знаешь зачем нужен аллокатор, предлагаешь на 100500 потоков 100500 аллокаторов и вообще высираешь всякую чушь.

anonymous
()
Ответ на: комментарий от anonymous

Ты сам себя замечательно разоблачаешь.

Вперёд.

Не знаешь, что сервера страдают от фрагментации памяти,

Каким образом? Скорее твоё говно страдает от фрагментации, но какбэ это твои проблемы, а не серверов и памяти.

не знаешь зачем нужен аллокатор

В отличии от тебя я знаю, поэтому я и считаю его не нужным, покрайней мере в твоём представлении.

предлагаешь на 100500 потоков

Ну вообще-то твои 100500 потоков даже и 10% одного не выдают, и да очередной бездарь-жабист, как недогрек.

100500 аллокаторов

Да, 100500 аллокаторов, ты против? Обоснуй, а я тебя обоссу. Давай забатлимся - хреначим 100500 потоков и ты берёшь свой один аллокатор, а я 100500 и бенчим, а после того, как ты обсираешься - ты выпиливаешься с этйо темы, да и с лора.

вообще высираешь всякую чушь.

Ты так и не осилил её описать - вперёд. Обаснуй что чушь и почему.

Carb
()
Ответ на: комментарий от anonymous

javascript - это не язык для серьёзной разработки. это просто недоязычёк

Анон, как всегда, выдает очень точную и важную аналитику.

Вообще весь топик вызывает у меня массу смешанных чувств. Желание плакат, смеяться и вскрыться.

А если по теме, то Си знать надо всем. Да и по сравнению с JS он проще. А вообще сравнивать их можно очень долго, так как эти языки решают весьма разные задачи. С другой стороны если стоит задача научиться программировать, то разницы, по сути, нет. Хотя я бы таки рекомендовал Си. Или Паскаль. А вообще, чем больше опыта, тем скорее переходишь на новый язык, и тем больше становиться все равно на чем писать (главное что бы язык решал нужные задачи).

sphericalhorse ★★★★★
()

Ах да, забыл ответить ТС"у. Давай я тебе расскажу с чего взялись твои 2-3раза, реалльных 20-30, но мы это опустим, пусть будет 2-3.

Есть такая штука как llvm. Грубо говоря пацаны пишут транлятор каждого языка в llvm-байткод, а llvm-байткод - это такая сишка чуть более кастрированная. Далее для этого llvm-байткода запилен конпелятор( т.е. оптимизатор, кодоген и прочая байда).

Есть такая штука asm-js и его клоны - это попытка записать этот llvm-байткод в синтаксис жабаскрипта, при этом оставля жабаскрипт валидным, через всякие ущербности синтаксиса вводится понятие тип, указатели прочая сишная мура. Все вызовы жабаскрипт говна заменяются на дёрганье жабаскрипт либц-прокси.

Далее берут сишный код, транслируют его в llvm-байткод, а потом это llvm-байткод какбэ шифруют(это какбэ llvm-байткод в жабаскрипт представлении, вернее в синтаксисе жс) в избыточном синтаксисе жабаскрипта. После чего специальный asm-js-дитектор дитектит этот код, обратно его преобразовывает в llvm-байткод и собриает llvm-конпелятором.

Т.е. жабаскриптом тут и не пахнет - такое можно сделать для почти любого языка.

Приэтом сишный код пропущенный через это говно теряет в среднем раз 10 по сравнению со шлангом, который сейчас является самый говёным конпелятором для сишки и находится где-то в районе msvs, даже этому говну он сливает в говно.

Т.е. к этим 10разам добавь ещё разницу между шлангом и нормальным конпелятором. И того уже 20-30раз для банальной трансляции.

Если же выпилить оттуда дитектор этого говна и просто транслировать его в жабаскрипт - он обосрётся раз в 200-300.

Далее не забывай, что берутся только простенкие и говёно написанные сишные либы, в которых производительности итак нет. Какой-нибудь xml-парсер или ещё какое говно, либо примитивную числодробилку.

Если же взять код чуть сложнее и уже с намёком на реальную производительность - жабаскрипт просто обосрётся. Даже обычная сишка обсирается.

И да, никогда жабаскрипт не сможет быть даже равным си, не то что его обогнать - это просто нереально технически. Пусть и не на обычном, но на си можно писать идеальный код - на жабаскрипте это нереально чисто физически - у тебя предсказуемость выхлопа нулевая.

Так же, как и ГЦ никогда не догонит руки.

Carb
()
Ответ на: комментарий от IIIypuk

как только интерпретатор на ASM напишут

Где-то еще остались чистые интерпретаторы JS?

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Когда пишешь скрипты, довольно-таки часто бывает, что не хватает возможностей С.

Ух ты! Как интересно! Например?

пожалуй, поддержу просьбу анонимуса о примере. Eddy_Em, не порадуешь?

AndreyKl ★★★★★
()
Ответ на: комментарий от Eddy_Em

Преобразование типов

в javascript-е? так там же всё преобразуется как хошь, только в путь. ч

полноценные функции

ох ёпт, то ли я чего то не понимаю, то ли одно из двух. не порадуешь объяснением чем функции в js менее полноценны чем в си?

человеческая работа с сокетами

ограничения протокола и модели безопасности ты куда денешь при этом?

AndreyKl ★★★★★
()
Ответ на: комментарий от Eddy_Em

Когда пишешь скрипты, довольно-таки часто бывает, что не хватает возможностей С.

это каких? С лёгкостью делать утечки памяти на стороне клиента, да?

emulek
()
Ответ на: комментарий от anonymous

Ну надо же, какой характерный пример попаболи. Весь инет наполнен нытьем плюсового и прочего быдла, о том что они не понимают [асинхронность, фп, замыкания, прототипы] js, с последующим маканием в говно, при этом все недопистоны усираются накостылить жалкие пародии фичь, которые в JS исаропки, а в свободное время срут кирпичами на форумах, рисуясь перед школотой.

Ну надо же, какой характерный пример попаболи.

emulek
()
Ответ на: комментарий от Eddy_Em

Это как раз — гонево какое-то. Я имел в виду полноценные функции, которые очень близки по логике к реальному ассемблерному коду, а не бредогенерации!

да ну! а можно пример когда тебе понадобилась в js функция «которая очень близка по логике к реальному ассемблерному коду, а не бредогенерации»?

А вот могли бы дать доступ к непривилегированным портам. Естественно, с разрешения хозяина.

едди, мне кажется или ты уж совсем не понимаешь чего говоришь.

скажем, чтобы легко байтики туда-сюда преобразовывать, удобно делать объединение массива из восьми char и одного uint64_t

какие то у тебя мягко говоря нетипичные для яваскрипта задачи. пример можно где тебе понадобилось то что ты описал на яваскрипте?

AndreyKl ★★★★★
()
Ответ на: комментарий от Eddy_Em

и тебе остается уповать на что угодно, что этот x — именно целое число. Т.е. нужно вводить дополнительные проверки того, что функция возвращает!!!

эдди, открою тебе тайну великую, ты безграмотен в обсуждаемом вопрос чуть менее чем полностью. ты терминологию освой хоть чуток. то что ты хочеь от жабаскрипта называется строгая типизация. и да, их есть у меня для тебя, называется TypeScript , развлекайся.

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.