Программисты, поясните что это

User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

starkiller wrote:
AndreyT wrote:Кто-нибудь из присутствующих программировал на таком C? А это и есть настоящий K&R.


Кто-нибудь из присутствующих использует коаксиальный кабель Ethernet (10BASE2)? Нет? Тогда это уже в вашем понимании не стандарт? А стандарт остался "ровно один" - тот который вы используете.

arhnet - лучший езернет. Только он мог работать по телефонной лапше!!!
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

starkiller wrote:
AndreyT wrote:
Мир, программирующий на С, сегодня программирует в подавляющем большинстве на C89/90. Какие-либо местечковые диалекты C89/90 являются не более чем недоделанным/урезанными/расширенными и т.п. реализациями C89/90 и именно так себя и позиционируют.


Вы о каком мире говорите? Такое ощущение что вы где то работаете в академических кругах или на консалтерскую контору. У них популярно программирование на "стандартном" С. Мир в основном пишет под GCC (что уж стандартным в вашем понимании C никак не назовешь) и других "местечковых диалектах".


Отнюдь. Я работаю на сугубо "практическую" контору. И пишем мы именно на С. Причем строимся для большого количества платформ - Solaris, несколько Linux-ов, WinNT, как 32, так и 64 бита. Раньше еще строились для HP-UX, AIX и еще кое-каких зверей, которые сейчас отошли на задний план. GCC у нас используется только для Linux. На Solaris используется "родной" компилер (как и на HP-UX и AIX). На WinNT - компилер из комплекта MSVC.

На "местечковых диалектах" мир пишет просто потому, что стеднестатистический программист с самого начала учился писать на каком-то местечковом диалекте и просто не знает, где проходит граница между ним и стандартным С. Потом, при необходимости, этот же программист (или специально заточенный человек) ударно выполняет работу по "портированию" с одного местечкового диалекта на другой (читай: гора #ifdef-ов), победно рапортует о предпринятых усилиях и "лавры текут к нему" за успешно выполненную бессмысленную работу.

Кстати, я никоим образом не утверждаю, что пользоваться особенностями конкретной реализации и/или платформы нельзя. Я лишь считаю, что надо понимать, что делаешь, и не лезть в местечковые дебри, если требуемая функциональнсть прекрасно реализуется стандартными средствами языка. С этим, впрочем, мало кто станет спорить, но к сожалению уровня компетентности среднестатистического девелопера сегодня как правило недостаточно, чтобы следовать этому правилу. Отсюда - разнообразные "писания под GCC" со всеми вытекающими.
Last edited by AndreyT on 13 Sep 2006 20:04, edited 2 times in total.
Best regards,
Андрей
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

starkiller wrote:
AndreyT wrote:Кто-нибудь из присутствующих программировал на таком C? А это и есть настоящий K&R.


Кто-нибудь из присутствующих использует коаксиальный кабель Ethernet (10BASE2)? Нет? Тогда это уже в вашем понимании не стандарт? А стандарт остался "ровно один" - тот который вы используете.


При чем здесь "используете"? Я не проводил никакой взаимосвязи между "используемостью" и "стандартностью". Мои пример приводился лишь для иллюстрации того факта, что среднестатистический программист толком и не знает, что за язык скрывается за обозначением "K&R C". Точнее, толкования этого обозначения могут различаться. А используют его или нет в данном случае не важно. В любом случае, это был лишь "пример на полях".

Вопрос же стандарт-не стандарт является чисто фактографическим и спорить тут соврешенно не о чем. Существует официальный стандарт Ethernet (10BASE2). Существуют стандарты С: C89/90 и C99. Это официальные документы. Стандарта K&R С - не существует. Вот, собственно, и все.
Best regards,
Андрей
starkiller
Уже с Приветом
Posts: 891
Joined: 21 Mar 2005 21:18
Location: California

Post by starkiller »

Это так. Но изначально Вы говорили о стандартном С а не стандартах на язык С. Это согласитесь не одно и то же. В скобках отмечу что организации которые занимаются стандартизацией как правило лишь пост-фактум выбирают с той или иной степенью обьективности один из существующих индустриальных стандартов и фиксируют его в качестве официального. Попытки что то придумать с нуля как правило заканчиваются весьма плачевно. Но это так, отступление, к теме не относится.

Кстати на мой взгляд немного людей пишут мультиплатформный код на С. Это все же по дизаину язык полусистемный (идеален для написания ОС и драйверов) и других достоинств у него нет, поэтому критерии его выбора часто коррелируют с привязкой к конкретной платформе с целью выжaть побольше из ее нестандартности. Интересно что за приложения вы пишете? Вы уверены что С для вас - оптимальный выбор? Я знал контору которая делала маршрутизатор на нескольких ОС платформах, но им пришлось ввести довольно таки жирный слой кода абстрагирующий их от железа и ОС.
starkiller
Уже с Приветом
Posts: 891
Joined: 21 Mar 2005 21:18
Location: California

Post by starkiller »

AndreyT wrote:На "местечковых диалектах" мир пишет просто потому, что стеднестатистический программист с самого учился писать на каком-то местечковом диалекте и просто не знает, где проходит граница между ним и стандартным С.


Вы недооцениваете "среднестатистического программиста" :nono#:
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

starkiller wrote:Это так. Но изначально Вы говорили о стандартном С а не стандартах на язык С. Это согласитесь не одно и то же.

стандартный - соответствует стандарту.
То, на котором все пишут - ето не стандартный, а "нормальный"..

starkiller wrote: Это все же по дизаину язык полусистемный (идеален для написания ОС и драйверов) и других достоинств у него нет, поэтому критерии его выбора часто коррелируют с привязкой к конкретной платформе с целью выжaть побольше из ее нестандартности.

ну язык то зам по себе плафромо-независимый, а вот библиотеки - они АФАИР даже раньше стандартом не были..

[qote]
Интересно что за приложения вы пишете? Вы уверены что С для вас - оптимальный выбор? Я знал контору которая делала маршрутизатор на нескольких ОС платформах, но им пришлось ввести довольно таки жирный слой кода абстрагирующий их от железа и ОС.[/quote]

Наверняка ето лучший выход. Мы пишем на 19 (?) платформ и тоже на C..
Кстати враппер там совсем не толстый...
Верить нельзя никому - даже себе. Мне - можно!
vzhik
Уже с Приветом
Posts: 1580
Joined: 15 Oct 2006 16:51

Post by vzhik »

Code: Select all

main() 
{
int i, N=20;
for(i =40 ; i < N ; i--)
printf("*");
}
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

vzhik wrote:

Code: Select all

main() 
{
int i, N=20;
for(i =40 ; i < N ; i--)
printf("*");
}


Во-первых, по условию тебуется изменить один символ ("не добавить, не убрать, не переставить - изменить один символ").

Во-вторых, обратите внимание на условие цикла: 'i < N'.
Best regards,
Андрей
Bambr
Новичок
Posts: 34
Joined: 04 Jan 2005 20:24

Хм

Post by Bambr »

Интересно, вот такой ответ подойдёт

int i, N=20;
for(i = 0 ; i < N ; N--)
printf("*");

Заменяем на
----------------------
Было, извиняюсь

Return to “Вопросы и новости IT”