Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/40: Рейтинг темы: голосов - 40, средняя оценка - 4.98
мастер ломания компов
30 / 36 / 1
Регистрация: 19.12.2011
Сообщений: 474
Записей в блоге: 1
1

Самый популярный язык программирования - java.

20.12.2011, 13:16. Показов 8092. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот собственно ссылка - http://www.tiobe.com/index.php... index.html
Но ведь язык c++ лучше и удобнее! Как же так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2011, 13:16
Ответы с готовыми решениями:

Действительно ли java на данное время самый актуальный язык?
нужен совет профессионалов.действительно ли java на данное время самый актуальный язык?на нем все...

Язык программирования Java и среда NetBeans В. Монахов
Нужна книга, в инете искал.

Язык программирования JAVA и среда NetBeans В. Монахов
Подскажите пожалуйста где можно найти и скачать содержимое диска к этой книге?

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

23
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
20.12.2011, 15:31 2
Лучше и удобнее для чего? Напишите на С++ приложение, которое будет работать под Win, *NIX, MacOS без пересборки. Ну или хотя бы с пересборкой, но без плясок с бубном. У меня перед глазами пример - приложение должно работать всего лишь под тремя версиями win и двумя версиями *NIX. C++-программисты тратят адское количество времени, чтобы заставить код одинаково работать и там, и там. А на Java это делается легко и непринужденно. Вон, сервер приложений скачал, развернул на любой OS, где есть JVM - и работает.

Не существует языка, который априори лучше и удобнее. Иначе бы все на нем писали, а остальные просто вымерли бы. Если язык имеет нишу, под которую он разрабатывался или в которой позиционируется (что не одно и то же) - там он скорее всего хорош. А в других областях не очень. Языки же широкого назначения типа С++ с большой степенью вероятности в узких нишах будут иметь более сильных конкурентов.

P.S. Не начинайте холиваров, за это по голове не погладят.

P.P.S. Лично для меня в Java наиболее привлекательны автоматическое управление памятью и очень большая стандартная библиотека (полностью переносимая). Учитывая, что я пишу софт, который работает на разных OS с разной архитектурой процессоров и разрядностью памяти - для меня переносимость крайне критична. Равно как и отсутствие необходимости ручного управления памятью.
0
43 / 35 / 8
Регистрация: 14.09.2011
Сообщений: 158
Записей в блоге: 1
21.12.2011, 11:01 3
Админам, мой пост не для разжигания холливара. Знаю С++ (конечно не так хорошо, как хотелось бы) и Java (уже на более-менее нормальном уровне). Да, сам вначале плевался на последний, говорил что непривычно и бла бла бла. Но со временем привык. В нем отлично действует принцип - один раз сделал и не паришься. А вот с С++ все довольно удобно только при разрабе под Win. И свой диплом, который мне прийдется на С++ писать, очень хотелось бы делать на Java.
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
21.12.2011, 12:09 4
в языках программирования действует принцип целесообразности, например код который не будет высоконагруженным и часто будет меняться лучше писать на языке типа python, коду котрому требуется переносимость между платформами, а также кластерно ориентированному лучше быть на java, высоконагруженному коду лучше быть с++/с, библиотеки с максимальной нагрузкой - вообще на ассемблере. В некоторых случаях даже операционка лишняя (вспомните про аппаратные декодеры mpeg4 на видеокартах и материнках). И кстати никто не ограничивает использовать всю эту катавасию сразу вместе.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.12.2011, 18:16 5
Я тоже удивился, когда увидел. Думаю, что это из-за мобильных приложений, вроде приложений для Android, которые пишутся в основном на яве.

Цитата Сообщение от Skipy Посмотреть сообщение
Напишите на С++ приложение, которое будет работать под Win, *NIX, MacOS без пересборки. Ну или хотя бы с пересборкой, но без плясок с бубном.
Можно с помощью, допустим, qt писать, и приложение будет работать с пересборкой. Ну это для графических приложений, консольные по дефолту переносимы(если WinAPI/etc не использовать).

С тем что с++ удобнее еще несколько месяцев назад я бы не согласился, сейчас же вышел c++0x, лично мне на нем намного быстрее и комфортнее кодить, чем на яве. Чего хотя бы foreach стоит:
C++
1
2
for ( auto &x : arr )
   ...
Во-первых удобно auto использовать, чтобы тип не указывать, во-вторых по ссылке передавать можно.

Еще меня быстродействие явы в отчаяние приводит. Я недавно для интереса написал программу, которая считывает 2 числа из миллиона разрядов, складывает их и результат выводит в файл. 7 минут работала =\ Эта же задача на плюсах у меня ровно за секунду отрабатывает.
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.12.2011, 18:38 6
Цитата Сообщение от diagon Посмотреть сообщение
Чего хотя бы foreach стоит:
Этот форич был сначала у перла, потом его перетянули в java и наконец он попал в ++ ))) И таки да, auto гораздо удобнее чем параметризированный тип.

По поводу быстродействия java - есть некотрые оговорки. Можно так написать код и на ++ чтобы всё маслало в хипе с постоянной переинициализацией и удалением обьектов и оно тоже будет тупить, а можно и на java заглянуть в сырцы OpenJDK и написать так чтобы не тормозило, а вовсю юзало JIT. Хочешь реального быстродействия на java - тогда, после профилирования все тромозные методы выкинь в натив на C и накомпили этих нативов на все целевые платформы. Кроссплатформенность просядет, но скорость вырастет до Cшной.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.12.2011, 18:58 7
Цитата Сообщение от mutagen Посмотреть сообщение
Хочешь реального быстродействия на java - тогда, после профилирования все тромозные методы выкинь в натив на C и накомпили этих нативов на все целевые платформы. Кроссплатформенность просядет, но скорость вырастет до Cшной.
По-моему писать на java, чтобы в итоге переписать все на С - не самое разумное решение =)
По сабжу: есть еще такой факт, что с++ осиливает далеко не каждый, тогда как java менее требовательна к программисту.
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.12.2011, 20:02 8
Цитата Сообщение от diagon Посмотреть сообщение
По-моему писать на java, чтобы в итоге переписать все на С - не самое разумное решение =)
Тем не менее именно так и поступают на практике. Просто java позволяет забыть про контроль границ памяти на время разработки логической части приложения, а в требовательных к скорости участках иногда приходится обращаться к С и даже больше в этих нативных С внутри самое скоростное делают на ассемблерных вставках. Большинство EE серверов приложений так и написаны. Даже в том же андроиде, игры пишутся именно при помощи JNI.
По поводу осиливания - думаю на начальном этапе java синтаксис проще ++, но потом когда программисты дорастают до энтерпрайз спецификаций и всяких там JSR сложность возрастает в геометрической прогресии.
Хотя конечно я должен признать что типичный С/С++ пограммист обладает большими познаниями в железной части компьютера чем java кодер.
На мой взгляд с++ надо знать хотя бы на уровне базовых технологий любому программисту на java, это сильно улучшит его программы в плане экономичности по памяти и скорости, просто в силу понимания того что происходит в памяти и на процессоре(хотя в процессоре скорее нужен асм)))
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
26.12.2011, 10:50 9
Цитата Сообщение от diagon Посмотреть сообщение
Думаю, что это из-за мобильных приложений, вроде приложений для Android, которые пишутся в основном на яве.
забываете про веб-приложения (jee)
Цитата Сообщение от diagon Посмотреть сообщение
Чего хотя бы foreach стоит:
Действительно, а чего он стоит?
Java
1
2
for(Object x : arr)
   ...
Цитата Сообщение от diagon Посмотреть сообщение
Во-первых удобно auto использовать, чтобы тип не указывать, во-вторых по ссылке передавать можно
Во-первых, в Java существует общий для всех суперкласс Object, во-вторых, все объекты передаются по ссылке
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.12.2011, 12:15 10
Цитата Сообщение от M128K145 Посмотреть сообщение
Во-первых, в Java существует общий для всех суперкласс Object
Суперкласс это другое.
Такой, к примеру, код не прокатит:
Java
1
2
3
4
String[] arr;
//...
for ( Object str : arr )
   System.out.println( str.length() );
Т.к. у Object нету метода length()
А вот на плюсах можно
C++
1
2
3
4
5
6
std::vector< std::string > arr;
//...
for ( auto &str : arr )
{
    std::cout << str.length();
}
Цитата Сообщение от M128K145 Посмотреть сообщение
во-вторых, все объекты передаются по ссылке
Разве?
А почему тогда такой код не изменяет строки?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args)
{
    String arr[] = new String[3];
    arr[0] = "1";
    arr[1] = "2";
    arr[2] = "3";
 
    for ( String str : arr )
    {
        str = "4";
    }
    
    for ( String str : arr )
        System.out.println(str);
}
Сдается мне, что передается все-таки по значению.
А вот на плюсах можно явно передавать по ссылке либо по значению.



Цитата Сообщение от mutagen Посмотреть сообщение
Тем не менее именно так и поступают на практике. Просто java позволяет забыть про контроль границ памяти на время разработки логической части приложения, а в требовательных к скорости участках иногда приходится обращаться к С и даже больше в этих нативных С внутри самое скоростное делают на ассемблерных вставках. Большинство EE серверов приложений так и написаны. Даже в том же андроиде, игры пишутся именно при помощи JNI.
Хм... Если уж терять кроссплатформенность, то не лучше ли ее терять с с++? Во-первых в нем намного проще делать Сшные вставки, во-вторых можно их и не делать, т.к. с++ по скорости ненамного отстает от С. пруф
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
26.12.2011, 13:02 11
Надо приводить к типу
Java
1
2
for ( Object str : arr )
   System.out.println( ((String)str).length() );
Цитата Сообщение от diagon Посмотреть сообщение
Сдается мне, что передается все-таки по значению.
А вот на плюсах можно явно передавать по ссылке либо по значению.
Да нет, как раз по ссылке. Вот такая запись
Java
1
str = "4";
меняет ссылку, т.к. строки - неизменяемый тип
0
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
26.12.2011, 13:20 12
Цитата Сообщение от diagon Посмотреть сообщение
Разве?
А почему тогда такой код не изменяет строки?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args)
{
    String arr[] = new String[3];
    arr[0] = "1";
    arr[1] = "2";
    arr[2] = "3";
 
    for ( String str : arr )
    {
        str = "4";
    }
    
    for ( String str : arr )
        System.out.println(str);
}
Сдается мне, что передается все-таки по значению.
Потому что первый цикл эквивалентен следующему:

Java
1
2
3
4
for(int i=0; i<arr.length; i++){
    String str = arr[i];
    str = "4";
}
Как Вы думаете, в исходном массиве при этом что-нибудь изменится?

А теперь сделайте так:

Java
1
2
3
4
5
6
7
8
9
10
        String[] arr = new String[]{"1","2","3"};
        System.out.println(Arrays.toString(arr));
        change(arr);
        System.out.println(Arrays.toString(arr));
 
    private static void change(String arr[]){
        for(int i=0; i<arr.length; i++){
            arr[i] = "4";
        }
    }
Почитайте про объекты и ссылки:
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.12.2011, 13:47 13
Цитата Сообщение от M128K145 Посмотреть сообщение
Надо приводить к типу
Это еще менее удобно, чем просто указать тип =\

Цитата Сообщение от M128K145 Посмотреть сообщение
Да нет, как раз по ссылке. Вот такая запись
меняет ссылку, т.к. строки - неизменяемый тип
Не только строки. Можно создать массив Integer'ов, и попробовать его изменить - также не получится.
При передаче по ссылке должен передаваться указатель на объект и автоматически разыименовыватся. И после такой записи
Java
1
str = "4";
этот указатель должен указывать на строку "4".

Опять же, если поставить вывод в цикл, то в теле цикла строки изменяются, а после цикла остаются прежними.

Потому что первый цикл эквивалентен следующему:
Это и есть передача по значению, а не по ссылке, разве нет?

Добавлено через 17 минут
Хотя я разобрался. String и Integer передаются по значению, а самописный класс - по ссылке.
Хотя и String и Integer вроде как являются объектами =\ Точнее они являются типами, но переменные их типа должны являться объектами.
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.12.2011, 19:28 14
java, если смотреть по удобству создания и использования классов, проигрывает с++ только в невозможности перегрузки примитивных операций (+-*/==!= и тд), отсюда и костыли с equals() ставящие в тупик c|c++ников

Для меня лично напряжным кажется овертайп когда пишут:
Java
1
Integer i = new Integer(1);
вместо
Java
1
i = new Integer(1);
если проперти нигде до этого не светился или инкапсулирован, казалось бы всё очевидно, просто добавить в парсер пару ифок и пусть создаст обьект такой как в new, но нет - надо стереть клаву в ноль или отсутствие конструкции
Java
1
2
3
with Integer, Double do {
  //делаем что-то в рамках классов его статическими методами
}
или например чтобы у всех private проперти автоматически по умолчанию появлялись гетеры и сетеры
(если я не вздумал их перегрузить), также при этом по ним можно было бы создавать дефолтный hashCode(). Гораздо ведь легче в конструкторе одной строкой nodefaults = true; отменить это поведение для экономии памяти, чем клепать всю эту катавасию на клавиатуре, пусть даже для этого и посоздавали удобства в IDE.
Самое неприятное, что невозможно свичнуться по строке вот так
Java
1
2
3
4
5
6
7
8
switch (var) {
 case "Smth1":  ret = new Smth1();
                     break;
 case "Smth2":  ret = new Smth2();
                     break;
 default: ret = null;
                     break;
}
и невозможно как в perl на лету посоздавать экземпляр по имени класса без танцев с кучей кода и аннотаций в RMI
вот хотябы такой конструкцией
Java
1
2
3
4
5
String [] classNames = {"Integer", "Double"};
for(String c: classNames) {
  {c} "prefix"+{c}.class.getName()+"Postfix" = new {c}();
{c} "prefix2"+{c}.class.getName()+"Postfix2" = new {c}(params2);
}
я понимаю что это может ввести в заблуждение синтаксический анализатор, но всё же можно было придумать что-то подобное, всё равно ведь из релиза в релиз бинки теряют совместимость с предыдущими JVM, так почему же так надо упираться в убогий синтаксис.
0
10 / 10 / 1
Регистрация: 26.02.2011
Сообщений: 112
22.04.2012, 12:18 15
Цитата Сообщение от diagon Посмотреть сообщение
7 минут работала
попробуйте с опцией JVM -server
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
22.04.2012, 14:28 16
в джаве оче не хватает аналогов LINQ и кейс классов вместе с паттерн матчерингом
0
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
23.04.2012, 08:27 17
Ну вот зачем вы опять начали это.
Цитата Сообщение от verbenin Посмотреть сообщение
Вот собственно ссылка - http://www.tiobe.com/index.php... index.html
Но ведь язык c++ лучше и удобнее! Как же так?
Вы на собственном опыте убедились, что c++ удобнее?? Сколько у вас опыта программирования на этих языках?
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.04.2012, 09:11 18
Кстати, Java уже не самый популярный язык. Самый популярный теперь С, С++ снова вернулся на 3 место, а шарп скатился на пятое, что втройне приятно.
0
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
23.04.2012, 10:12 19
Цитата Сообщение от diagon Посмотреть сообщение
Кстати, Java уже не самый популярный язык. Самый популярный теперь С, С++ снова вернулся на 3 место, а шарп скатился на пятое, что втройне приятно.
В середине 2010-го было то же самое. Потом С опять скатился, к началу 2011-го. Ну и?
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
23.04.2012, 13:31 20
TIOBE, как по мне, уже теряет актуальность и объективность. Я могу объяснить прирост Objective-C на 30%, но вот VB.NET и PL/SQL на 200% - никак
0
23.04.2012, 13:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2012, 13:31
Помогаю со студенческими работами здесь

Самый популярный язык программирования на сегодняшний день
Решил создать новую тему на основе этой и этой темы. В течение недели выбираем самый популярный...

Популярный язык программирования для разработки под Linux
Мне кажется один из самых удобных языков программирования при разработке десктопных приложений под...

Самый простой язык программирования
Какой самый простой язык программирования для написания программ? Решил начать изучать...

Самый худший язык программирования?
Какой, по-вашему мнению самый худший язык программирования и главное почему? Начну с себя....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru